Rightfields でも改行したい!

 Movable Type のエントリーフィールドを拡張して CMS ツールとしての MT の機能を格段に広げることのできるプラグイン RightFields を仕事で使っているのだけど、前にも遭遇したのですが拡張したフィールドにはエントリーの改行設定が反映されません。その挙動が未だに理解できないので(したくないのか……)個人的には使っていない MT デフォルトの『改行を変換する(Convert Line Breaks)』を選択しても拡張したフィールドでは改行が <br /> に変換されないのです。
 これはなかなか困った問題で、お客様には極力 HTML を記述しなくてもサイトの更新が容易に行えるという目的の下でフィールドを拡張しテンプレートをカスタマイズした MT を提供しているのに、<br /> といえどもタグを書かせてしまうなんて(しかもたかだか文章を改行するためだけになんて)本末転倒もいいところだと神の声が聞こえてきそう。

 というわけで、解決してみました。この方法が最適かどうかはわからないけど、とりあえず動いているのでよし。
 オフィシャルの BBS でも同じような問題に突き当たっている人がいました(返信したのだけど操作方法があっていたのかどうか、現時点ではページに反映されてません)。

 方法はいたって簡単です。
 まず、The blog of H.Fujimoto さんの 「改行を変換する」を改良するプラグイン(ModTextFilter)をインストールします。
 それからテンプレートの該当部分に filters="ModTextFilter" の記述を追加。

<MTExtraFieldValue field="movie_introduction" filters="ModTextFilter">

 もしかしたら MT デフォルトの『改行を変換する(Convert Line Breaks)』を利用できるのかもしれませんが、convert_breaks="1" では改行出来ませんでした。
 とりあえずこれで様子を見てみます。

 様子を見た結果、ogawa さんにスマートな方法を教えていただきました。
 どこでもConvert Line Breaksするための2つのTips - Ogawa::Memoranda
 さっそくボクもこちらに乗り換えました。なるほど、convert_breaks はフィルターではないのか。remove_html は効いたのに convert_breaks が効かなかったのはそういうことなのですね。もっとソース読まなくては。。。

 convert_breaks が使えず remove_html が使えた時点で前者がグローバル・タグ・アトリビュートでなく後者がそうだという感じは何となくしていたのですが、『改行を変換する』をグローバル・フィルター(・プラグイン)化する方法がわからなかったのです。

comments powered by Disqus