Movable Type でカテゴリ同士の相互リンクを貼る方法

Movable Type でカテゴリ同士の相互リンクを貼る方法

Movable Type のカテゴリアーカイブにおいて、そのブログ内のカテゴリ同士で相互リンクを貼る方法を紹介します。

このカスタマイズでは「SpecificCategory」という特定のカテゴリのコンテキストをセットするプラグインを使いますので、あらかじめインストールしておいてください。

さて、ブログに下記のようなカテゴリがあったとします。

  • MTテンプレート
  • MTプラグイン
  • 日記

この中の2つを下記のように相互リンクさせます。

  • MTテンプレート <=> MTプラグイン
  • MTプラグイン <=> MTテンプレート
  • 日記

完成したテンプレート

完成したテンプレ−トは以下のとおりです。なお、カテゴリアーカイブでの利用を前提としています。

<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とカテゴリ名を変数にセットします。

  • ブログID = blog_id
  • カテゴリ名 = current_label

次に相互リンクの関係をハッシュ変数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です。

以上です。

  • このエントリーをはてなブックマークに追加
Just a second...