MTEntriesを複数条件でフィルタリングする(スニペットは無理?)

MT、PowerCMSを触るときに絶対使うのがMTEntriesタグ。

 

一覧ページだったりを作るのによくつかうけれど、

少し複雑なフィルタリングを掛けようとすると意外と難しかったり、出力できないことがしばしば。。。

 

今回はカスタムフィールド(ラジオボタン)複数でフィルタリングを掛けたときのメモ。

 

■カスタムフィールド1

・ベースネーム:radio_sample

・テンプレートタグ:radioSample

・オプション:opA、opB

■カスタムフィールド1

・ベースネーム:radio_sample

・テンプレートタグ:radioSample

・オプション:op1、op2、op3

--------------------------------------------------------------

■やりたいこと

・複数カスタムフィールドの値でフィルタリングを掛けたい

ex) 文字で表すと opA AND op1 や opA AND op3 といった具合

 

<例1>

<MTEntries field:radio_sample="opA">

    <MTEntries field:radio_sample="opB">

        <MTIgnore>/*ここに出力内容*/</MTIgnore>

    </MTEntries>

</MTEntries>

 

手っ取り早いのがこのやり方。

だけど、MTEntriesを入れ子にするのは見た目がよろしくないような気がする・・・(個人の意見だけれども)

なので私のやり方は次の例2

 

<例2>

<MTIgnore>出力したくないものを先に出力</MTIgnore>

<MTEntries field:radio_sample="opB"><MTEntries>

 

<MTEntries field:radio_sample="op1" unique="1">

    <MTIgnore>/*ここに出力内容*/</MTIgnore>

</MTEntries>

 

一度除外したいものを先に空で出力し、unique="1"で重複記事を消すことでフィルタリングをかける。

もし、同一テンプレート内で再度MTEntriesを呼び出す場合はまた入れ子の式を書かなくて済むのでできれば例2を使ったほうがべんり(かも?)。

 

※ちなみに、スニペットで作ったカスタムフィールドの値でMTEntriesのフィルタリングはかけれないので注意

(1時間ほど格闘しましたができませんでした・・・知っている方は教えてくださいmm)

 

おわり。