MTIFタグで条件を満たす場合のみ表示させる方法
ページコンテンツには「必須」と「非必須」項目がある。
指定フィールドのいずれかに入力がある場合に「表示する」や、
全ての指定フィールドに入力がある場合に「表示する」といった処理を簡単に書く方法です。
例えば、見出しと本文のフィールドのどちらかに入力がある場合、見出しと本文のフィールド両方に入力がある場合を判定したい場合などに使用します。
サンプルテンプレート
MTSetVarBlockタグ の値に、対象フィールドに入力がある場合は「1」が出力される様に設定します。
<mt:ignore>MT7</mt:ignore>
<mt:SetVarBlock name="onflag">
<mt:ContentField content_field="見出し">1</mt:ContentField>
<mt:ContentField content_field="本文">1</mt:ContentField>
</mt:SetVarBlock>
<mt:ignore>MT6</mt:ignore>
<mt:SetVarBlock name="onflag">
<mt:if tag="EntryTitle">1</mt:if>
<mt:if tag="EntryBody">1</mt:if>
</mt:SetVarBlock>
見出しと本文のフィールドのどちらかに入力がある場合
MTIFタグ のlikeモディファイアで、MTSetVarBlockタグの値に「1」が含まれる場合を判定条件に設定します。
<mt:if name="onflag" like="1">
表示する内容
</mt:if>
タイトルを名前、本文をプロフィール文としている場合など、どちらかが未入力でも成り立つコンテンツの場合に使用します。
<mt:if name="onflag" like="1">
<div>
<h2>プロフィール</h2>
<div>
<h3>タイトル(名前)</h3>
<p>本文(プロフィール文)</p>
</div>
</div>
</mt:if>
見出しと本文のフィールド両方に入力がある場合
MTIFタグ のtestモディファイアで、MTSetVarBlockタグの値に「1」が含まれる数を判定条件に設定します。
「含まれるフィールドの数」とある箇所に、見出し、本文のフィールドの数「2」を設定します。
<mt:If test="$onflag = $onflag =~ s/1//g; $onflag == 含まれるフィールドの数">
表示する内容
</mt:if>
タイトルを企業名、本文を事業内容としている場合など、全て登録されて成り立つコンテンツの場合に使用します。
<mt:If test="$onflag = $onflag =~ s/1//g; $onflag == 2">
<div>
<h2>パートナー会社</h2>
<div>
<h3>タイトル(企業名)</h3>
<p>本文(事業内容)</p>
</div>
</div>
</mt:if>
番外編:見出しと本文のフィールド両方とキーワードに入力がある場合
MTIFタグ のtestモディファイアで、MTSetVarBlockタグの値に「1」と「2」が含まれる数を判定条件に設定します。
「含まれるフィールドの数1」とある箇所に、見出し、本文のフィールドから出力される「1」の数「2」を設定します。
「含まれるフィールドの数2」とある箇所に、見出し、本文のフィールドから出力される「2」の数「1」を設定します。
ただ、条件が複雑になると可読性が低下するので、あまりおすすめできません。
<mt:SetVarBlock name="onflag">
<mt:ContentField content_field="見出し">1</mt:ContentField>
<mt:ContentField content_field="本文">1</mt:ContentField>
<mt:ContentField content_field="キーワード">2</mt:ContentField>
</mt:SetVarBlock>
<mt:If test="
$con1 = $onflag =~ s/1//g;
$con2 = $onflag =~ s/2//g;
$con1 == 含まれるフィールドの数1 && $con2 == 含まれるフィールドの数2
">
表示する内容
</mt:if>
このような場合は以下の様に書き換え、ページコンテンツの「必須」と「非必須」項目を切り分けのために使用するのが良いと思います。
<mt:If test="$onflag = $onflag =~ s/1//g;$onflag == 2">
<div>
<h2>パートナー会社</h2>
<div>
<h3>タイトル(企業名)</h3>
<p>本文(事業内容)</p>
<mt:ContentField content_field="キーワード">
表示する内容
</mt:ContentField>
</div>
</div>
</mt:if>
あとがき
条件のフィールドが少ない場合は、フィールドの入力判定で良いかもしれませんが、改修、引き継ぎを考えると、上記の様な判定の方が、仕様が分かりやすく「表示条件っぽいのがある」と気づかせる書き方かなと思います。
見出しと本文のフィールド両方に入力がある場合
<mt:ContentField content_field="見出し">
<mt:ContentField content_field="本文">
表示する条件
</mt:ContentField>
</mt:ContentField>