Movable Typeの『グローバル・モディファイアリファレンス』(encode_htmlとかencode_js)

January 8, 2009

Movable Typeメモです。

グローバル・モディファイアリファレンス(グローバル・タグ・アトリビュート)に、ついてです。


ことの発端

先日、AddClipsが急にエラーが出ておかしいなっと思いながらも、時間がなかった&あまり使われていないだろうという憶測で、とりあえずエラー回避のために、AddClip自体を外していました。

ひとつ前のエントリで「関連記事」の部分が、急にエラーになって、色々調べていると、「"(ダブルクォーテーション)」をエスケープ出来ていないので、エラーが出ていたことの気が付きました。

AddClipsも同じ理由だったようです。

(関連記事のエントリですが、こっそりと修正しています。申し訳ありません。)


グローバル・モディファイアとは

エスケープの方法を色々と調べていると、グローバル・モディファイアリファレンスなるものがあることに気が付きました。 <$mt:BlogTitle$>なんかではよく使っていたのですが、他のMTタグ全般でも使えることを分かっていませんでした。

グローバル・モディファイアは、MTタグで出力する時に、htmlエンコードなど、様々な形に変換してくれる便利な機能だそうです。


使えそうなグローバル・モディファ

encode_html

恐らくこれが代表格だと思います。 「<」を「&lt;」、「&」を「&nbsp;」などの形にHTMLエンコードしてくれます。

『<$mt:EntryTitle encode_html="1" $>』

こんな感じで使用します。


encode_js

javascriptで「"」を入れるとエラーになるので、変換してくれます。 「"」を「¥"」という形に変換してくれます。

『<$mt:EntryTitle encode_js="1" $>』

こんな感じで使用します。


encode_url

urlのアルファベット以外の文字を 16 進数ベースのものに変換します。 MT自体は日本語通るので、そんなに使う機会は無い気がしますが、タグに日本を使っている場合にやっていると、無駄なエラーを防ぐことが出来るかもしれません。

『<$mt:EntryTitle encode_url="1" $>』


spam_protect

@ マークなどの記号をエンコードしてくれます。主にスパム防止ですね。 「@」を「&#64;」というようにエンコードしてくれます。

『<$mt:EntryTitle spam_protect ="1" $>』


trim_to

最初の N 文字を取り出してくれます。 

ただ、切れ目にstrongタグなんかあると、タグが閉じられないままになってしまうそうです。

参考:RedLine Magazine : trim_to="N"を使いたかったんだけど...

使いどころですね。トップページの新着情報で文字数を制限したい時になんかには良いかもしれませんが、切れた時に「...」などの、切れてますよって表記が入れられないので、注意が必要です。


『<$mt:EntryTitle trim_to="N" $>』


私が気になったのは以上です。

更に詳しくは
グローバル・モディファイアリファレンス | MovableType.jp