10月 11 2010

[MT]hashとプライベートタグを使って、少しだけメンテが楽な目次ページを作る方法

例えば 「Movable Type 5 ドキュメント|movabletype.jp」のような目次的なページで、
個々のページはウェブページで生成し、適当な章立てをしつつ見せたい、なんていう時にページ追加・削除時のメンテを少しだけ楽にする書き方を工夫してみた。

前提として、
* 個々のページはウェブページで作成し、章をプライベートタグで入れておく 。
* 目次ページ自身はインデックスアーカイブか、ウェブページにmteval=”1″を指定して生成する。

<mt:SetHashVar name="section">
<$mt:SetVar name="01" value="@インストールと初期設定"$>
<$mt:SetVar name="02" value="@アップグレード"$>
<$mt:SetVar name="03" value="@フォームの作成(基本操作)"$>
<$mt:SetVar name="04" value="@管理画面の操作"$>
<$mt:SetVar name="05" value="@フォームのデザインカスタマイズ"$>
<$mt:SetVar name="06" value="@開発者向けガイド"$>
<$mt:SetVar name="07" value="@セキュリティ、死活監視"$>
<$mt:SetVar name="08" value="@各種リファレンス"$>
</mt:SetHashVar>

<mt:Loop name="section" sort_by="key">
<h2><$mt:Var name="__value__"  replace="@","" $></h2>
<ul>
<mt:Pages folder="A-Form/ドキュメント" tags="$__value__" sort_by="title" sort_order="ascend">
<li><a href="<$mt:PagePermalink$>"><$mt:PageTitle remove_html="1"$></a></li>
</mt:Pages>
</ul>
</mt:Loop>

この方法のポイントは、プライベートタグ設定など適度に手動制御部分を残しつつ、判定文はいっさい書き足さずにメンテできるところでして、
* 章の順番を自由に制御できる。
* タグベースなのであるページを複数の章に所属させたい時にも対応できる。
* 章を増やす時はmt:SetHashVar部分に1行を書き足すだけでよくて、面倒っちぃ判定文を書き足す必要がない。

せいぜい数十ページ程度までの小規模な目次ページなら小回りがきいてオススメな感じ ^^

逆にページ数が膨大な場合はプライベートタグの設定がかえって面倒で、あまりメリットはでない。
あと、印象として再構築がやや長めかもしれない。

<mt:SetHashVar name=”section”>
<$mt:SetVar name=”01″ value=”@インストールと初期設定”$>
<$mt:SetVar name=”02″ value=”@アップグレード”$>
<$mt:SetVar name=”03″ value=”@フォームの作成(基本操作)”$>
<$mt:SetVar name=”04″ value=”@管理画面の操作”$>
<$mt:SetVar name=”05″ value=”@フォームのデザインカスタマイズ”$>
<$mt:SetVar name=”06″ value=”@開発者向けガイド”$>
<$mt:SetVar name=”07″ value=”@セキュリティ, 死活監視”$>
<$mt:SetVar name=”08″ value=”@各種リファレンス”$>
</mt:SetHashVar>

<mt:Loop name=”section” sort_by=”key”>
<h2><$mt:Var name=”__value__” replace=”@”,”" $></h2>
<ul>
<mt:Pages folder=”A-Form/ドキュメント” tags=”$__value__” sort_by=”title” sort_order=”ascend”>
<li><a href=”<$mt:PagePermalink$>”><$mt:PageTitle remove_html=”1″$></a></li>
</mt:Pages>
</ul>
</mt:Loop>