Dittoのテンプレート展開時の不具合をご報告します。
回避はできるので、やはりスルーしてしまいそうになりましたが…。
発生条件は、
- ・テンプレートに同じプレースホルダを2回利用
・内蔵phxのifemptyモディファイア(に限らないかもしれません)を最後に出てくるプレースホルダで利用
・ifemptyに渡すのは、2回目に登場するプレースホルダ。
========================================
以下、デモサイトで確認いただいた方が早いのですが、testケース1と2が該当(不具合)です。
http://150205101809-17135.evo.demo.modx.jp/
●testケース1
<li><a href="[+url+]" title="[+title+]">[+menutitle:ifempty=`[+title+]`+]</a></li>
●testケース2
<li><a href="[+url+]" title="[+pagetitle+]">[+menutitle:ifempty=`[+pagetitle+]`+]</a></li>
いずれもループ最後のリソースの[*menutitle*]の有無で出力が判定されているように見える。
この場合、最後のリソースのmenutitleが入力されていれば、すべて同じメニュータイトルが表示されてしまう。空の場合はmenutitleが入っていようが、pagetitleが表示される。
しかし、
●testケース3
<li><a href="[+url+]" title="[+title+]">[+menutitle:ifempty=`[+pagetitle+]`+]</a></li>
や
●testケース4
<li><a href="[+url+]" title="[+title+]">[+menutitle:ifempty=`menutitle is empty`+]</a></li>
や
●testケース5
<li><a href="[+url+]" title="[+menutitle:ifempty=`[+pagetitle+]`+]">[+menutitle:ifempty=`[+pagetitle+]`+]</a></li>
や
●testケース6
<li><a href="[+url+]" title="[+menutitle:ifempty=`[+pagetitle+]`+]">[+pagetitle+]</a></li>
のように、重複利用しなかったりifemptyを繰り返したり順番を入れ替えると、
期待通りの結果が得られますので、よくわからない感じです。
Dittoテンプレ内では複雑な条件分岐はできるだけ避けるようにしていますが、上記ケースは発生条件が限定しているとしても、割と使う処理であると思います。