MTIf タグの tag モディファイアでテンプレートタグの値を直接参照する

MTIf タグの tag モディファイアでテンプレートタグの値を直接参照する

Posted at February 10,2008 2:12 AM
Tag:[MovableType, MTIf, Template]

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>

少し見通しが良くなりました。

関連記事
トラックバックURL


コメント

書籍の方でいつもお世話になってます。
松岡ともうします。


書籍を読んでいてどうしても分からなかったことがあります。


訪問者さんがコメントを残される際、
「匿名でコメントする」

となっているのですが、
これを消すといいますか、


FC2などの無料ブログサービスのようにするには
どうすれば良いのでしょうか?


「匿名でコメントする」の意味が分かりづらいようで・・

よろしくお願いします。


[1] Posted by 松岡 : February 11, 2008 3:00 PM

>松岡さん
こんばんは。
ご質問の件ですが、「コメント投稿フォームをデフォルトで表示する&「匿名でコメントすることもできます。」の文言を修正する」が参考になれば幸いです。
それではよろしくお願い致します。

[2] Posted by yujiro logo : February 15, 2008 12:09 AM

こんにちは。
書籍を参考にしています。

質問なのですが、

<mt:if tag="MTEntriesCount">
のtagの中身を複数指定することは可能でしょうか。 

例えば、<mt:if tag="MTEntriesCount か MTCategoryCount">
という感じで、~か~があれば、という意味になります。

「|」での区切りも試したのですが、ダメでした。

[3] Posted by 成海 : June 2, 2008 3:23 PM

>成海さん
こんにちは。
ご質問の件ですが、tagモディファイアに複数のタグを指定することはできないので、
それぞれを一旦、別の変数に取得してから判定する、以下のような方法でお試しください。

<$mt:EntriesCount setvar="flag1"$>
<$mt:CategoryCount setvar="flag2"$>
<mt:if test="$flag1 || $flag2">
OK
<mt:else>
NG
</mt:if>

それではよろしくお願い致します。

[4] Posted by yujiro logo : June 10, 2008 2:29 PM

>tagモディファイアに複数のタグを指定することはできないので、
なるほど。
早速教えていただいたソースでトライしてみます!

[5] Posted by 成海 : June 13, 2008 9:12 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)