MT4.2でのconvert_breaksに関するバグ
MT4.2のダイナミックパブリッシングででサイトを構築していたら以下のようなエラーが。
Smarty error: [plugin] modifier 'convert_breaks' is not implemented (core.load_plugins.php, line 118)
これはMT4.2のmt/php/libにmodifier.convert_breaks.phpというファイルがないから出るらしい。
デフォルトの入力モードを「改行を変換」にし、カスタムフィールドで複数行フィールドを利用した場合、smartyのconvert_breaksモディファイアを利用しようとするのだけど、そのモディファイアが存在しないのとしてエラーが出るようです。
MT4.1からmodifier.convert_breaks.phpを持ってきてmt/php/libに置けば直ります。
MT4.1がもうダウンロードできないので、同じように困ってる人の為にMTOS4.1のmodifier.convert_breaks.phpのコードを書いておきます。
(MT4.1と同じphpですがライセンス的な問題でMTOS4.1のコード)
<?php
# Movable Type (r) Open Source (C) 2001-2008 Six Apart, Ltd.
# This program is distributed under the terms of the
# GNU General Public License, version 2.
#
# $Id: modifier.convert_breaks.php 1174 2008-01-08 21:02:50Z bchoate $
function smarty_modifier_convert_breaks($text) {
require_once("MTUtil.php");
return html_text_transform($text);
}
?>
ただ、この場合カスタムフィールドの改行がbrに変換されてしまいます。
(たぶん、4.2からの仕様変更のからみかな)
変換されたくない場合は、modifier.convert_breaks.phpの
return html_text_transform($text);
を
return $text;
に変更してください。
関連エントリー
MTのテンプレート開発で再構築を不要にするfastDevelopmentプラグイン
Movabletypeエントリー時の注意事項
ダイナミックパブリッシング環境でSortCatFldプラグインを利用する。
MovableTypeにダイナミック・パブリッシングを設定する
Movable Typeの再構築 高速化いろいろ