mt:If tag="EntryBody" が効かないので、
MTで条件分岐をさせる場合に、特定の入力エリアに内容が入っていない場合の処理という事で、
<mt:Entries>
<mt:If tag="hoge">
//hogeに内容がある場合の処理
<mt:Else>
//hogeに内容がない場合の処理
</mt:If>
</mt:Entries>
//※hogeにはMTタグや、カスタムフィールドタグが入ります。
という方法があります。
ですが、この方法だと、tagモディファイアに、EntryBodyを設定するとうまく動きません。
なので、こういう実装をしてみました。
<mt:Entries>
<$MTEntryBody remove_html="1" regex_replace="/ /g","" setvar="bodyFlag"$> //エントリーボディの値から、htmlタグと空白を除去し、$bodyFlag変数へ
<mt:If name="bodyFlag" ne="">
//$bodyFlagに内容がある場合の処理
<mt:Else>
//$bodyFlagに内容がない場合の処理
</mt:If>
</mt:Entries>
リッチテキストで、中途半端に内容を入れ、それを消したつもりになってると、<br />とか残ってたりします。それを、remove_htmlモディファイアで消去。
EntryBodyのエリアには何も触れなくても、なぜか空白が入ったりしてます。
その可能性を、regex_replaceで強引に消してます。
その2処理をした内容を、$bodyFlagに格納し、それが空でなければ、EntryBodyに内容が入っている場合の処理をし、
空ならば逆の処理をします。
ま、力技です;
もっといい方法があったら教えてください。
- tag
- movableType
- tips