Movable Type のタグには <mt:Else> が効くものと、効かないものがある。
たとえば <mt:EntryNext> や <mt:EntryPrevious> などは、その内部・直下では <mt:Else> が効かない。
つまり、こんなコードを書いても、意図通りに動かない
<mt:EntryNext>
<a href="<mt:EntryPermalink>"次の記事: <mt:EntryTitle></a>
<mt:Else>
<span>これが最新の記事です。</span>
<!-- mt:Else は効かないので、ここはスルーされる。 -->
</mt:Else>
</mt:EntryNext>
こういう場合、どうするんだっけ・・・・?が、まったく思い出せない。
Movable Type のテンプレを触るのは8年ぶりくらいで、色々忘れているのだ。
という事で、またスグ忘れそうなモノは、ここにメモを残しておく。
解決策1
<mt:EntryNext>の場合は、
以下のようにすれば <mt:Else> が効くようになる
(<mt:Else> は、</mt:Else>で閉じなくてもエラーは出ない)
<mt:If tag="EntryNext">
<mt:EntryNext>
<a href="<$mt:EntryPermalink$>"次の記事: <$mt:EntryTitle$></a>
</mt:EntryNext>
<mt:Else>
<span>(これが最新の記事です)</span>
</mt:If>
解決策2
コッチがこのページの本題。
mt:If tag ができないモノや、イチイチ tag 調べるのが面倒くさいよ!という場合は、以下のようにする
<mt:SetVar name="has_next" value="0">
<mt:SetVar name="has_prev" value="0">
<!-- ///////////////////////////////////////////////////// -->
<mt:EntryNext>
<mt:SetVar name="has_next" value="1">
<a href="<mt:EntryPermalink>"次の記事: <mt:EntryTitle></a>
</mt:EntryNext>
<mt:If name="has_next" eq="0">
<span>これが最新の記事です。</span>
</mt:If>
<!-- ///////////////////////////////////////////////////// -->
<mt:EntryPrevious>
<mt:SetVar name="has_prev" value="1">
<a href="<mt:EntryPermalink>"前の記事: <mt:EntryTitle></a>
</mt:EntryPrevious>
<mt:If name="has_prev" eq="0">
<span>これが最初の記事です。</span>
</mt:If>
要は、SetVar で 何か変数を用意し、<mt:EntryNext> の中で変数を書き換える。
そして変数が変更されていない場合、Next や Prev が存在しないと判断して別途 HTMLタグを出力すればよい。というコトだ。
マジでいろいろ忘れているなあ・・・。
今回の更新は以上。