2005.05.11

[MT] HTML特殊文字を変換する

以前書いたもののリライト。
<> などを &lt;&gt; に一発変換する方法です。タグを書いたりする際に便利ですね。
Movabletype の編集画面には太字にしたりリンクを貼ったりするボタンがありますが、それと同じように使います。選択範囲に日本語などのほかの言葉が混じっていても、この部分だけ変更されます。

編集するのは、
mt 内にある mt.js と、
mt>tmpl>cms 内にある edit_entry.tmpl です。
念のためにコピーを取っておくことをお勧めします。

PHPには「htmlspecialchars」という、HTML における特殊文字(<, >, ", &)をHTMLエンティティ(&lt;, &gt;, &quot;, &amp;)に変換する命令がありますが、それをもじってみましたよ。

まず、 mt.js に以下の関数を追加します。
153行目くらいの、 formatStr 関数の上か下あたりがわかりやすいんじゃないかと。

※追記(2005/6/20)
MT3.17では getSelection ではなく getSelected です。
showBOO さんthx!
参考:mt.jsのfunction名が変わっている(MT3.17)

function formatChars(e) {
if (!canFormat) return;
var str = getSelection(e);
if (!str) return;

tmp = str.split("&").join("&amp;");
tmp = tmp.split("<").join("&lt;");
tmp = tmp.split(">").join("&gt;");
tmp = tmp.split("\"").join("&quot;");

setSelection(e, tmp);
return false;
}

次に、mt>tmpl>cms 内にある edit_entry.tmpl に追記します。
ver3.151なら187行目くらいにいれればいいのでは。

write('<a title="<MT_TRANS phrase="HTMLSpecialChars">" href="#" onclick="return formatChars(document.entry_form.text)"><img src="<TMPL_VAR NAME=STATIC_URI>images/html-chars.gif" alt="<MT_TRANS phrase="HTMLSpecialChars">" width="22" height="16" /></a>');

追記の部分にも入れたい場合は 220行目あたりに ↓

write('<a title="<MT_TRANS phrase="HTMLSpecialChars">" href="#" onclick="return formatChars(document.entry_form.text_more)"><img src="<TMPL_VAR NAME=STATIC_URI>images/html-chars.gif" alt="<MT_TRANS phrase="HTMLSpecialChars">" width="22" height="16" /></a>');

編集したら、2つのファイルをアップロードしてください。
で、mt>images に html-chars.gif をアップして完了です。

↑よかったら、右クリックで保存してお持ち帰りください。

14:40 | COMMENT (8) | TRACKBACK (7)

TB & COMMENT

May 15, 2005 09:15 PM » エントリー画面でのHTMLの特殊文字変換 from Project MultiBurst
先日、エントリーの際のHTMLの特殊文字変換でめんどくさいな〜と書きましたが、 ... ...more

June 20, 2005 02:19 AM » mt.jsのfunction名が変わっている(MT3.17) from Project MultiBurst
MTを3.17にアップグレードしたのですが、 以前やったカスタマイズのうち、 ・... ...more

January 9, 2006 09:29 AM » エントリー画面でのHTMLの特殊文字変換 from Project MultiBurst
先日、エントリーの際のHTMLの特殊文字変換でめんどくさいな〜と書きましたが、 ... ...more

May 4, 2006 11:08 PM » エントリー画面のカスタマイズ from Tea Time Lover
これは以前からやりたかったんですよね。エントリー画面のカスタマイズ。何せ面倒でね... ...more

May 15, 2006 07:04 AM » HTMLエンティティ(特殊文字) ♠♣♥♦ from MAKIZOU.COM
♠♣♥♦はどのように見えていますか? HTMLの記号は、そのまま書いてもWebブラウザ上では正しく表示されま... ...more

May 20, 2006 11:49 AM » Mobabletypeで>などを <> に一発変換する from 鯖缶メモ φ( ̄Д ̄ )
エントリーでタグを使いたかったのでやってみた。 MTdir/mt-static/... ...more

May 25, 2006 02:57 PM » HTML特殊文字を変換 from Daryl's HomePage
tableボタンついでに、<>といった特殊文字を &lt; および &gt;などに一発変換する タグ変換ボタンを追加した。 参考にしたのは... ...more

TBありがとうございます!

すばらしいカスタマイズをTBしていただきありがとうございます!!
早速導入してみたいと思います!

FROM showBOO : May 11, 2005 05:42 PM

どもー(*´∀`*)ノ
以前書いたものをそのうち上げねばと思っていたところに、showBOOさんの記事を見つけたので、失礼かとは思いましたがトラックバックさせていただきました。お役に立てれば幸いです♪

FROM ひ@用務員 : May 11, 2005 07:19 PM

早速導入させて頂きました!!
ありがとうございました!!

FROM showBOO : May 15, 2005 09:15 PM

いやはや、お返事が遅れました。
その後はいかがですか?

クイックポストにも入れたい場合は、
mt/tmpl/cms/ の bm_entry.tmpl をいじれば良さそうです。
「canFormat」で検索をかければすぐわかると思うので、同じように追加すると良いですね('ー')b"

あと紛らわしくてすいません。
「用務員」は称号みたいなもんです(^^;

FROM ひじり : May 19, 2005 07:47 PM

お久しぶりでございます。
その節はお世話になりました。

今回、MTを3.17にアップグレードしたのですが、
この特殊文字変換のカスタマイズが動かなくなりました。

いろいろ今調べている最中です。

もし原因がわかりましたら、またお知らせ致します。

FROM showBOO : June 20, 2005 01:49 AM

早速の解明ありがとうございました!
追記させていただきましたー♪

FROM ひじり : June 20, 2005 09:46 PM

使わせていただきました。
ありがとうございます~。

FROM nekokak : August 9, 2005 02:51 PM

> nekokakさん
亀レスごめんなさい。
ありがとうございました~(^-^)/~

FROM ひじり : August 12, 2005 10:48 PM

POST

コメント登録機能が設定されていますが、TypeKey トークンが設定されていません。