現在リニューアル中の和菓子ブログは、一つの和菓子レビューについて、複数のカテゴリを設定しています。

まず、和菓子屋、和菓子の種類、和菓子の味、イベントなどの大カテゴリを作成します。

そのそれぞれの大カテゴリ下に具体的な和菓子屋名だとか、種類だとかの小カテゴリを作成し、そこに、ブログ記事をカテゴリ登録しています。

そうすると、小カテゴリのカテゴリアーカイブは、エントリー一覧でも良いのですが、大カテゴリをエントリー一覧にしてしまうと、全記事一覧が、複数出来てしまうような形になり、具合が悪いです。

そこで、特定のカテゴリアーカイブについては、サブカテゴリの一覧を表示させ、その他のカテゴリアーカイブは、エントリー一覧を表示させるカスタマイズを行いました。

カスタマイズは、自己責任で、よろしくです。

概要

mtsetVarBlockで、categoryBasenameの値を代入し、mt:if で、条件分岐させる。

以下は、カスタマイズ手順。

※<>は、全角なので、注意!

各カテゴリの出力データに、カテゴリフォルダ名の値を持たせる

mtsetVarBlockを使って、categoryBasenameの値を代入する。

カテゴリアーカイブテンプレートの始めに、以下を記述。

<mt:setVarBlock name=”category_name”><$mt:categoryBasename$></mt:setVarBlock>

意味は、「category_name」に、「categoryBasename」の値を代入せよ。

category_nameは、分かりやすく、適当に決めた名前。

<$mt:categoryBasename$>は、カテゴリのフォルダ名。

カテゴリを特定出来るなら、<$mt:categoryLabel$>、<$mt:categoryDescripsion$>でも良いが、カテゴリのフォルダ名が、一番変更されない可能性が多いので、<$mt:categoryBasename$>にした。

カテゴリアーカイブテンプレートは、カテゴリの数だけHTMLなどのファイルを出力する。

カテゴリが、10個あれば、その10個のカテゴリについて、カテゴリアーカイブテンプレートに沿ったファイルを一つずつ、計10個出力する。

上記の記述をカテゴリアーカイブテンプレートに追加することによって、出力を10回繰り返す時に、それぞれの出力で、それぞれのカテゴリの値を保持出来る。

後は、その保持したカテゴリの値が、条件にあえばこちらのテンプレート、条件にあわなければそちらのテンプレート、というように、条件分岐させることで、異なるテンプレートを出力出来る。

元のテンプレート

<mt:Entries>
<$mt:include module=”共通ブログ記事の概要”$>
</mt:Entries>

カスタマイズ後のテンプレート

<mt:if name=”category_name” eq=”apple”>
<mt:subCategories>
<mt:subCatIsFirst><ul></mt:subCatIsFirst>
<li><a href=”<$mt:categoryArchiveLink$>”><$mt:CategoryDescription$></a></li>
<mt:subCatIsLast></ul></mt:subCatIsLast>
</mt:subCategories>
<mt:else>

<mt:Entries>
<$mt:include module=”共通ブログ記事の概要”$>
</mt:Entries>
</mt:if>

カテゴリが複数の場合は、

<mt:if name=”category_name” eq=”apple”>

部分が、

<mt:if name=”category_name” like=”apple|orange”>

となる。

eqが、like となり、「|」で区切る。

タイトル部分もカスタマイズ

また、タイトルも、記事一覧ではおかしいので、カテゴリ一覧に変更する。

元のテンプレート。

<h1 id=”page-title” class=”category-header”><$mt:CategoryDescription$>記事一覧</h1>

変更後のテンプレート

<mt:if name=”category_name” like=”apple|orange”>
<h1 id=”page-title” class=”category-header”><$mt:CategoryDescription$>内カテゴリ一覧</h1>
<mt:else>

<h1 id=”page-title” class=”category-header”><$mt:CategoryDescription$>記事一覧</h1>
</mt:if>

以上のカスタマイズで、指定したappleとorangeのカテゴリについては、カテゴリに所属する記事一覧ではなく、サブカテゴリが表示される、はずです。

たぶん。