MovableType

改行で区切った文字をliタグでリストにする方法

MT7からリストフィールドが追加されましたが、違うフィールドでも、上限数なしにリストが使用したいといったご要望が多々あります。

そんなときは、プラグインやマークダウン記法を駆使したり、PowerCMSならMTSplitVars タグで解決ができるのですが、諸事情により対応できないこともあると思います。

そんな、どうしようもないときのために、文字列からリストを作成するテンプレートをご紹介します。

改行ごとにリストとして出力するテンプレートです。

テンプレート

テキストエリアのカスタムフィールドや、MTSetVarBlockタグに以下の様に入力されている場合を想定します。

<mt:SetVarBlock name="テキスト">

Movable Type 7
Movable Type 6

Movable Type 5

Movable Type 4

Movable Type 3

</mt:SetVarBlock>

改行までの範囲を、replace_2で指定するliタグで囲みます。

<mt:SetVarBlock name="replace_1">/(.*)(\n|\r|$)/g</mt:SetvarBlock>
<mt:SetvarBlock name="replace_2"><li>$1</li></mt:SetvarBlock>

文字列が入力されているフィールドで、以下の様に置換を行います。

空行にもliタグが表示されるので、replaceで削除します。

<mt:if name="テキスト">
<ul>
    <mt:Var name="テキスト" regex_replace="$replace_1","$replace_2" replace="<li></li>","">
</ul>
</mt:if>

行ごとに空の改行や末尾に改行が入力されている場合でも大丈夫です。