Dittoテンプレート内でのphx不具合?  【解決済み】

質問全般・改善要望
返信する
noka
メンバー
メンバー
記事: 94
登録日時: 2013年6月19日(水) 10:02

Dittoテンプレート内でのphx不具合?

投稿記事 by noka »

こんにちは。

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テンプレ内では複雑な条件分岐はできるだけ避けるようにしていますが、上記ケースは発生条件が限定しているとしても、割と使う処理であると思います。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: Dittoテンプレート内でのphx不具合?

投稿記事 by yama »

http://forum.modx.jp/viewtopic.php?f=34&t=1504
精密なテストありがとうございます。上記にアップデートしていただいてよいでしょうか?r8からであればinstallフォルダ以外を上書きするだけでよいです。
http://150205101809-17135.evo.demo.modx.jp/
こちらは修正しました
noka
メンバー
メンバー
記事: 94
登録日時: 2013年6月19日(水) 10:02

Re: Dittoテンプレート内でのphx不具合?

投稿記事 by noka »

yamaさま

こんにちは。
確認が遅れましたが、最初に報告した不具合は解消しておりました。ありがとうございました。
その後、少し複雑なことをしているサイト(J14-r6)をベータアップデート(J14-r9-b5)を適用してチェックしてみました。
今までは、改行ひとつでなぜかちゃんと動いたり動かなかったりしていて、触れるのを避けていたところでもあるのですが、だいぶ安定している感があり、ありがたいです。

そのなかで些細なことですが、自作phxモディファイアが正常に動かないケースがありましたので、phx関連ということで、追加させていただきます。
★同じモディファイアを重ねた場合、期待通りの結果が得られない(ことがある)

ようです。
とはいえ、よくよく確認したところJ14-r6ではDittoテンプレに書き込み時とリソースへの書き込み時で挙動が違ったところ、
最新では、どちらも同じ結果になった感じですので本来の仕様ということかもしれません。
========================================

(症状の例)

[*id:math=`?+2`:math=`?*5`*]としても「id*5」にしかなりません。
J14-r6では、リソースではダメですが、Dittoのテンプレに記述すると、2を加算して5倍した値が返ってきます。

#自作のモディファイアでも同様でした。同一のモディファイアを重ねなければ問題ありません。

------------------------------
以上です。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: Dittoテンプレート内でのphx不具合?

投稿記事 by yama »

なるほど、たしかに今の組み立て方だと同じモディファイアを2回使えません。後ほど修正します。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: Dittoテンプレート内でのphx不具合?  【解決済み】

投稿記事 by yama »

http://forum.modx.jp/viewtopic.php?p=8155#p8155
こちらのベータ版を試していただけますでしょうか?
返信する