今回は、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>