movable-type
MovableType8のTinyMCE6でmtevalを使う際にmtタグの<>が実態参照されるのを停める
作成日: 2025年4月27日
前にもやったけど、最近WPばっかでMT弄ってなかったが9がでるってので今更7.1から8.4にしたところ、投稿画面が酷い状況だった。
先ずプラグイン整理して、7.1で使えてたTinyMCE1xが使えないので削除しTinyMCE6にして、assetのimage.pmを毎度書き換えてるが書き換えて画像を入れたらaltの<mtentrytitle>の<>が実態参照されてタイトル読まない。
過去投稿でTinyMCEのコアファイル書き換えをしてたのを思い出し、同様に治そうと思ったがファイルのコードが変わっていて単純に変えられなかった。
AI使いながらよくよく実態参照している部分を探し、変更してようやく実態参照されないようにできた。
const makeMap$3 = Tools.makeMap;
// const attrsCharsRegExp = /[&\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
// const textCharsRegExp = /[&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
// const rawCharsRegExp = /[<>&\"\']/g;
const attrsCharsRegExp = /[&\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
const textCharsRegExp = /[&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
const rawCharsRegExp = /[&\"\']/g;
const entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi;
const asciiMap = {
128: '\u20AC',
130: '\u201A',
131: '\u0192',
132: '\u201E',
133: '\u2026',
134: '\u2020',
135: '\u2021',
136: '\u02c6',
137: '\u2030',
138: '\u0160',
139: '\u2039',
140: '\u0152',
142: '\u017d',
145: '\u2018',
146: '\u2019',
147: '\u201C',
148: '\u201D',
149: '\u2022',
150: '\u2013',
151: '\u2014',
152: '\u02DC',
153: '\u2122',
154: '\u0161',
155: '\u203A',
156: '\u0153',
158: '\u017e',
159: '\u0178'
};
const baseEntities = {
'"': '"',
'\'': ''',
// '<': '<',
// '>': '>',
'&': '&',
'`': '`'
};
const reverseEntities = {
// '<': '<',
// '>': '>',
'&': '&',
'"': '"',
''': `'`
};
mt-static/plugins/TinyMCE6/tiny_mce/tinymce.jsの2752行目から
削除せずコメントアウトして差し替えを書いた。
tinymce.min.jsが読まれると思うが、こちらも同様の指定となるよう<>を削除、置換指示も削除する。
mtevalモデファイアがあるのにTinyMCEリッチテキストで実態参照されるって、おかしいよな。
MTは3から使っているが、いくらTinyMCEがライブラリっつーかプラグイン扱いだとはいえ本末転倒だよな。
非商用だから個人無償版でやってるけどさ、これ10万払って機能不全とか、WPにシェア取られるわけだよな。