カスタムフィールドとフラグメント識別子

今回は、Movable Typeのカスタムフィールドで、フラグメント識別子を入れたものを利用して、ページ内のリストメニューとして出力させる方法のメモです。

MTでフラグメントをあつかう方法はいろいろとあるのですが、以前からカスタムフィールドを利用して何かできないものか考えていましたので試してみることにしました。

設定の流れとしては以下のとおりです。

といった具合です。で、カスタムフィールドの作成はこの際端折ってしまうとして、問題は区切り文字をどう解釈させるかにあります。

ちょうどよさそうなプラグインが見つかりましたので、今回利用させていただくことにしました。以下に解説が記載されています。

以下のテンプレートタグによるコードは、カスタムフィールド(mt:cf_fragment)を作成して、エントリページのカスタムフィールドにsection_01,section_02,section_03のような入力があった場合に、a href="#section_01" のようなリンクを出力します。

<mt:if tag="cf_fragment">
<$mt:setarray tag="cf_fragment" name="frag" sep=","$>
<ul>
<mtloop name="frag">
 <li><a href="#<$mt:Var name="__value__"$>">section<$mt:var name="__counter__"$></a></li>
</mtloop>
</ul>
</mt:if>