Movable Type でカテゴリ同士の相互リンクを貼る方法を紹介します。
Movable Type でカテゴリ同士の相互リンクを貼る方法
Movable Type のカテゴリアーカイブにおいて、そのブログ内のカテゴリ同士で相互リンクを貼る方法を紹介します。
このカスタマイズでは「SpecificCategory」という特定のカテゴリのコンテキストをセットするプラグインを使いますので、あらかじめインストールしておいてください。
さて、ブログに下記のようなカテゴリがあったとします。
この中の2つを下記のように相互リンクさせます。
完成したテンプレ−トは以下のとおりです。なお、カテゴリアーカイブでの利用を前提としています。
<mt:BlogID setvar="blog_id">
<mt:CategoryLabel setvar="current_label">
<mt:SetVar name="interlinkage" key="MTテンプレート" value="MTプラグイン">
<mt:Loop name="interlinkage">
<mt:SetVar name="interlinkage" key="$__value__" value="$__key__">
</mt:Loop>
<mt:Var name="interlinkage" key="$current_label" setvar="interlinkage_label">
<mt:If name="interlinkage_label">
<mt:SpecificCategory label="$interlinkage_label" blog_id="$blog_id">
<p><a href="<mt:CategoryArchiveLink>">「<mt:CategoryLabel>」はこちら</a></p>
</mt:SpecificCategory>
</mt:If>
順番に解説していきます。
<mt:BlogID setvar="blog_id">
<mt:CategoryLabel setvar="current_label">
まず、現在のブログIDとカテゴリ名を変数にセットします。
次に相互リンクの関係をハッシュ変数interlinkage
にセットします。
<mt:SetVar name="interlinkage" key="MTテンプレート" value="MTプラグイン">
例えば、「MTテンプレート」のカテゴリページには「MTプラグイン」カテゴリへのリンクを貼る場合は、ハッシュ変数interlinkage
のキーに「MTテンプレート」を、値に「MTプラグイン」をセットします。このセットは一方通行で構いません(MTプラグイン => MTテンプレートの関係は不要)。
<mt:Loop name="interlinkage">
<mt:SetVar name="interlinkage" key="$__value__" value="$__key__">
</mt:Loop>
作成したハッシュ変数interlinkage
について、一度ループを回して、逆方向の関係も自動でセットします。ハッシュ変数interlinkage
自身のキーに値を、値にキーをセットします。
<mt:Var name="interlinkage" key="$current_label" setvar="interlinkage_label">
そして、ハッシュ変数interlinkage
から、現在のカテゴリ名をキーとする値を取得し、変数interlinkage_label
にセットします。つまり、この変数interlinkage_label
が現在のカテゴリの相互リンク先のカテゴリ名になります。
<mt:If name="interlinkage_label">
<mt:SpecificCategory label="$interlinkage_label" blog_id="$blog_id">
<p><a href="<mt:CategoryArchiveLink>">「<mt:CategoryLabel>」はこちら</a></p>
</mt:SpecificCategory>
</mt:If>
変数interlinkage_label
が存在する場合、mt:SpecificCategory
タグのlabel
モディファイアに変数interlinkage_label
(相互リンク先のカテゴリ名)を渡し、blog_id
モディファイアに現在のブログIDをセットします。
そうすると、このmt:SpecificCategory
タグの中には相互リンク先のカテゴリコンテキストがセットされるので、あとはリンクのHTML等を出力すればOKです。
以上です。