MT7でカテゴリー別にテンプレートの表示を変えて、しかも表現をシンプルにする

MT7でカテゴリー別にテンプレートの表示を変えるで書いた
「もし古いアーカイブとリンクのパスが同じようなものであれば、条件分岐すら必要ない」を実験してみた。

モジュール内に全て書くと実行されなかったので、カテゴリーテンプレートの上の方に

<mt:SetVarBlock name="cat_link"><$mt:ArchiveLink$></mt:SetVarBlock>

を入れる。
「カテゴリー別テンプレート」というモジュールを作って、その中に

<a href="<mt:Var name="cat_link" replace="archives_mt7","archives">"><$mt:ArchiveTitle$> アーカイブ</a>

としてみた。
あとは、カテゴリーアーカイブのテンプレートの表示させたい場所に

<$mt:Include module="カテゴリー別テンプレート"$>

を入れて再構築。

古いアーカイブがarchives、新しいアーカイブがarchives_mt7、これ以下のパスが全部同一の場合はこれでうまくいった。
新しいカテゴリーを作っていたり、ディレクトリ名を変更していると空欄になった。

こっちの

<mt:If name="cat_name" eq="細々した日常を週単位で">
<a href="/archives/diary/weekly/"><$mt:ArchiveTitle$> アーカイブ</a>
<mt:ElseIf eq="Movable Type備忘録">
<a href="/archives/web/mt/"><$mt:ArchiveTitle$> アーカイブ</a>
<mt:ElseIf eq="Google関連">
<a href="/archives/web/google/"><$mt:ArchiveTitle$> アーカイブ</a>
</mt:If>

やり方だと、カテゴリー分だけElseIf文を作らないといけないので、カテゴリ数が多い場合は結構面倒だね。

参考:テンプレートタグリファレンス replace

最終更新日: