MT シークレットタグを利用して特定のウェブページを表示する

MTではタグの項目に入力したタグで先頭に@を付けたタグはシークレットタグと呼ばれ、mt:Tagsの一覧から除外されます。今回はこの事を利用してインタビューのブログを作ってみます。

内容としては、親カテゴリーの英語名を変数に入れてシークレットタグとマッチしたウェブページ(プロフィール)を表示すると言ったものです。

仕様

  • インタビューされる人のカテゴリーを作る
  • インタビュータイトルのはその子カテゴリーで作成する
  • インタビュー記事はブログ記事で作成し、親カテゴリー、子カテゴリーの両方のカテゴリーを設定
  • インタビューされる人のプロフィールはウェブページで作成し、写真の変更などをMTのダッシュボードから編集出来るようにする
  • プロフィールを表示するページはカテゴリーアーカイブとブログ記事。カテゴリーに属するプロフィールをサイドバーに表示する

今回はインタビューされる人のカテゴリーの出力ファイルをpoundhound、reijiにし、ウェブページでプロフィールページを作成しタグにそれぞれ@poundhound、@reijiと言うシークレットタグを付けました。

private_tag02.jpg

まずはカテゴリ別ブログ記事リスト、ブログ記事に次のサブテンプレートを記述します


<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モディファイアでアーカイブタイプがマッチしたところでプロフィールページを表示します。

ちょっとややっこしいけど結構使えそうですよね?