カスタムフィールドのテキストエリアに入力した改行をページに反映させる

カスタムフィールドのテキストエリアに入力した改行をページに反映させる

Posted at March 18,2008 12:50 AM
Tag:[CustomField, MovableType]

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

関連記事
zenback
人気エントリー
トラックバックURL


トラックバック

カスタムフィールドのテキストエリアの改行を有効にする from 02 備忘録
カスタムフィールドで追加したテキストエリアに入力した改行を有効にする必要があった... [続きを読む]

Tracked on October 2, 2009 4:35 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)