MTIf タグの tag モディファイアでテンプレートタグの値を直接参照する
Movalbe Type 4.1 で、MTIf タグに tag モディファイアがいつのまにか追加されていました。本エントリーで紹介します。
使い方は簡単で、tag モディファイアにテンプレートタグ(ファンクションタグ)を指定すれば、変数のように値を参照できます。
1.基本
<mt:if tag="[ファンクションタグ名]">
指定したテンプレートタグに値がある場合は true、ない場合は false を返却します。
2.サンプル
ファンクションタグの値を MTSetVarBlock タグで一旦変数に取得して判定するケース
<mt:setvarblock name="count"><$MTEntriesCount$></mt:setvarblock>
<mt:if name="count">
:
</mt:if>
は、
<mt:if tag="MTEntriesCount">
:
</mt:if>
または
<mt:if tag="EntriesCount">
:
</mt:if>
と書くことができます。
3.応用
以前紹介した、「ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版)」を少し書き換えてみます。
変更前
<MTIf name="entry_template">
<MTSetVarBlock name="entryid"><$MTEntryID$></MTSetVarBlock>
<MTSetVarBlock name="entrycategory"><$MTEntryCategory$></MTSetVarBlock>
<dt class="sidetitle">
Entries of this Category
</dt>
<dd class="side">
<ul>
<MTEntries category="$entrycategory">
<MTSetVarBlock name="currententryid"><$MTEntryID$></MTSetVarBlock>
<MTIf name="currententryid" ne="$entryid">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTIf>
</MTEntries>
</ul>
</dd>
</MTIf>
変更後
<MTIf name="entry_template">
<MTSetVarBlock name="entryid"><$MTEntryID$></MTSetVarBlock>
<MTSetVarBlock name="entrycategory"><$MTEntryCategory$></MTSetVarBlock>
<dt class="sidetitle">
Entries of this Category
</dt>
<dd class="side">
<ul>
<MTEntries category="$entrycategory">
<MTIf tag="EntryID" ne="$entryid">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTIf>
</MTEntries>
</ul>
</dd>
</MTIf>
少し見通しが良くなりました。
- MTInclude タグの name モディファイア
- Movable Type(MT)の特殊変数の入れ子
- ブロックタグにelseタグを組み込んで判定する
- Movable Type 5 におけるウェブサイトとブログの複数指定方法
- ウェブサイトとブログでグローバルナビゲーションを共有する
- regex_replace モディファイアをダイナミックパブリッシングで利用する場合の注意
- Movable Type のアーカイブページへのリンクを相対パス(ホストからの相対URL)で表示する
- include_with_website モディファイア
- Movable Type の記事中の&を&に変更する方法
- Movable Type テンプレートタグの簡略化まとめ
- Movable Type のテンプレートタグでよくある5つの書き間違い
- Movable Type で他のブログのテンプレートモジュール・ウィジェットを利用する
- Movable Type のブロックタグにファンクションタグで使うモディファイアを指定する
- MTIf タグの test モディファイアで Perl の式を利用する
- Movable Type 4.1 / MTOS における配列とハッシュの利用方法
- MTIf タグの like 属性について
- MTSetVarBlock と MTSetVarTemplate の違いについて
- strip 属性で日付の空白を削除する
- MTIgnore タグ
- エントリーで table タグを記述する場合の注意
書籍の方でいつもお世話になってます。
松岡ともうします。
書籍を読んでいてどうしても分からなかったことがあります。
訪問者さんがコメントを残される際、
「匿名でコメントする」
となっているのですが、
これを消すといいますか、
FC2などの無料ブログサービスのようにするには
どうすれば良いのでしょうか?
「匿名でコメントする」の意味が分かりづらいようで・・
よろしくお願いします。
>松岡さん
こんばんは。
ご質問の件ですが、「コメント投稿フォームをデフォルトで表示する&「匿名でコメントすることもできます。」の文言を修正する」が参考になれば幸いです。
それではよろしくお願い致します。
こんにちは。
書籍を参考にしています。
質問なのですが、
<mt:if tag="MTEntriesCount">
のtagの中身を複数指定することは可能でしょうか。
例えば、<mt:if tag="MTEntriesCount か MTCategoryCount">
という感じで、~か~があれば、という意味になります。
「|」での区切りも試したのですが、ダメでした。
>成海さん
こんにちは。
ご質問の件ですが、tagモディファイアに複数のタグを指定することはできないので、
それぞれを一旦、別の変数に取得してから判定する、以下のような方法でお試しください。
<$mt:EntriesCount setvar="flag1"$>
<$mt:CategoryCount setvar="flag2"$>
<mt:if test="$flag1 || $flag2">
OK
<mt:else>
NG
</mt:if>
それではよろしくお願い致します。
>tagモディファイアに複数のタグを指定することはできないので、
なるほど。
早速教えていただいたソースでトライしてみます!
