MT7でカテゴリー別にテンプレートの表示を変える

MTのバージョンアップの際に、古いデータベースを引き継がないで新規でインストールしているので、古い記事を探すときに自分でも手間取ることがある。
カテゴリーアーカイブに古いアーカイブへのリンクが貼ってあれば、少しはマシになると思ったので、カテゴリーアーカイブのテンプレートを修正してみた。

最初モジュールで読み込ませてみたところ、うまく動かない。あれこれ変えてもどうにもダメ。
MT6でテストしてみると、こっちはうまくいった。
疲れたのでいったん終了。
次の日の朝に同じことをやったら、すんなりイケた。
ナニこれ??

とりあえずやってみたこと。

「カテゴリー別テンプレート」というモジュールを作って、カテゴリーアーカイブのテンプレートに入れる。
<$mt:Include module="カテゴリー別テンプレート"$>

「カテゴリー別テンプレート」の中身はこんなカンジ。
<mt:IfCategory name="ダイエット"><a href="/archives/diary/diet/">ダイエット アーカイブ</a></mt:IfCategory>
<mt:IfCategory name="欲しいもの"><a href="/archives/diary/wantlist/">欲しいもの アーカイブ</a></mt:IfCategory>
<mt:IfCategory name="やりたいこと"><a href="/archives/diary/wishtodo/">やりたいこと アーカイブ</a></mt:IfCategory>

最初モジュールでうまくいかなかったときに、カテゴリーアーカイブのテンプレートにこれを直書きしたら反映したので、モジュールを読み込むタイミングに何か問題があるのかも?

カテゴリーアーカイブのテンプレートの上の方(<html>より上)に、<mt:SetVarBlock name="cat_name"><$mt:ArchiveTitle$></mt:SetVarBlock>を入れて、「カテゴリー別テンプレート」モジュールをこうしてみた。

<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>

もし古いアーカイブとリンクのパスが同じようなもの(古いアーカイブのディレクトリがoldで、それ以下のパスが全部同じとか)であれば、条件分岐すら必要なくて、これだけで済んじゃうかも。
<a href="/old<$mt:ArchiveLink encode_html="1"$>"><$mt:ArchiveTitle$> アーカイブ</a>

これについては別ページで実験結果を書きました。
参考:MT7でカテゴリー別にテンプレートの表示を変えて、しかも表現をシンプルにする

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

こんなのでも出来たけど、上のやつより行が増えるのでかえって見づらい。

参考:テンプレートタグリファレンス MTIfCategory
参考:テンプレートタグリファレンス MTArchiveLink
参考:テンプレートタグリファレンス MTVar
参考:テンプレートタグリファレンス MTSetVarBlock
参考:テンプレートタグリファレンス MTIf

最終更新日: