News
2008年3月18日
エントリー本文
カスタムフィールドのテキストエリアに入力した改行をページに反映させる
Movable Type のカスタムフィールドで「テキスト(複数行)」という種類のフィールドを利用する際、テキストエリアへの入力内容に改行や空行を含めても、出力される文字列の改行や空行はすべて除去された状態で出力されてしまいます。
本エントリーでは、この事象を解消する方法を紹介します。
1.問題点
例えば、次のようなカスタムフィールドを作成します。テンプレートタグはとりあえず「EntryData」としておきます。

作成したフィールドで、次のようなテキストを入力します。

このカスタムフィールドを出力する「ブログ記事の概要」のサブテンプレートは次のようにします。
:
<div class="asset-body">
<$MTEntryBody$>
<MTIfNonEmpty tag="EntryData">
<$MTEntryData$>
</MTIfNonEmpty>
</div>
:
このテンプレートで出力されるカスタムフィールドの内容には、ご覧の通り、改行が含まれません。

2.対処方法
改行を含めるには、グローバルモディファイアである、filter モディファイアをカスタムフィールドに適用します。
:
<div class="asset-body">
<$MTEntryBody$>
<MTIfNonEmpty tag="EntryData">
<$MTEntryData filters="__default__"$>
</MTIfNonEmpty>
</div>
:
値に設定されている __default__ は、テキストフィルタとして定義されている予約変数(厳密にはMT::Util::html_text_transformをハンドリングするためのキー名)です。
このように設定することで、カスタムフォールドの出力結果に改行(br 要素や p 要素)が反映されます。

もう少し厳密に言えば、ブログ記事やウェブページの本文・追記のフォーマットで「改行を変換」を選択したものと同じ結果で出力されます。
3.参考記事
Ogawa::memoranda:どこでもConvert Line Breaksするための2つのTips
Posted by yujiro
この記事を読んだ人はこんな記事も読んでいます
- Movable Type 4.1 書籍のまとめ
- コメントのフラグメントを動的に切り替える
- Movable Type 4.1 カスタムフィールドの使用方法
- カスタムフィールドによるアップロード画像をサムネイルで表示するプラグイン 0.02
- バンダイ ∞(むげん)プチプチ
- カスタムフィールドの入力文字数の制限を変更する
- Movable Type 4.1 カスタムフィールドのデータの実体
- Movable Type 4.1 リリース候補第2版公開
- Movable Type プラグイン一覧(MT4対応)
- カテゴリーリストにカスタムフィールドの画像を表示する
人気エントリー
Hatena Hot Entries
Hatena Entries
トラックバックURL
コメントする
greeting
