MT シークレットタグを利用して特定のウェブページを表示する
MTではタグの項目に入力したタグで先頭に@を付けたタグはシークレットタグと呼ばれ、mt:Tagsの一覧から除外されます。今回はこの事を利用してインタビューのブログを作ってみます。
内容としては、親カテゴリーの英語名を変数に入れてシークレットタグとマッチしたウェブページ(プロフィール)を表示すると言ったものです。
仕様
- インタビューされる人のカテゴリーを作る
- インタビュータイトルのはその子カテゴリーで作成する
- インタビュー記事はブログ記事で作成し、親カテゴリー、子カテゴリーの両方のカテゴリーを設定
- インタビューされる人のプロフィールはウェブページで作成し、写真の変更などをMTのダッシュボードから編集出来るようにする
- プロフィールを表示するページはカテゴリーアーカイブとブログ記事。カテゴリーに属するプロフィールをサイドバーに表示する
今回はインタビューされる人のカテゴリーの出力ファイルをpoundhound、reijiにし、ウェブページでプロフィールページを作成しタグにそれぞれ@poundhound、@reijiと言うシークレットタグを付けました。
まずはカテゴリ別ブログ記事リスト、ブログ記事に次のサブテンプレートを記述します
<mt:SetVarBlock name="category_val">@<mt:TopLevelParent><$mt:CategoryBasename$></mt:TopLevelParent></mt:SetVarBlock>
CategoryBasenameでカテゴリ名を取得、TopLevelParentでその親カテゴリ名に変換、先頭に@を付けた値を変数category_valにセットします。
サイドバーには次のサブテンプレートを記述します
<mt:SetVarBlock name="arc_type"><$mt:ArchiveType></mt:SetVarBlock>
<mt:SetVarTemplate name="profile_val">
<mt:Pages tags="$category_val">
<p><$mt:PageTitle$></p>
<div><$mt:PageBody$></div>
</mt:Pages>
</mt:SetVarTemplate>
<mt:If name="arc_type" eq="Individual">
<$mt:GetVar name="profile_val"$>
<mt:ElseIf name="arc_type" eq="Category">
<$mt:GetVar name="profile_val"$>
</mt:If>
arc_typeと言う変数に今表示しているアーカイブタイプをセットします。次にウェブページのエントリーを表示するPagesのモディファイアtagsにcategory_val($category_val)をセットします。
カテゴリーpoundhoundに属するインタビュー記事を表示している時のcategory_valの値は@poundhoundに、カテゴリーreijiに属するインタビュー記事を表示している時は@reijiが入るので、それぞれのシークレットタグを付けたウェブページが表示される訳です。
プロフィールを表示するのはブログ記事(Individual)とカテゴリーアーカイブ(Category)ですので、mt:Ifのnameモディファイアに現在のアーカイブタイプが入った変数arc_typeをセット、eqモディファイアでアーカイブタイプがマッチしたところでプロフィールページを表示します。
ちょっとややっこしいけど結構使えそうですよね?