チャンク内に以下のような条件分岐を記述し、[+comment+]プレースホルダに何らかの値が設定されている場合にのみメッセージが表示される動作を期待したのですが、値の内容に関わらず常にメッセージが表示されてしまいました。
<!--@IF: [+comment+]-->
コメントありがとうございます。
<!--@ENDIF-->
文法的に間違っている箇所などありますでしょうか?
なお上記プレースホルダは cfFormMailer スニペットで使用しています。
■環境
MODX 1.0.14J-r9
cfFormMailer 1.3
チャンク内での条件分岐
Re: チャンク内での条件分岐
このように書いてみてください。どのように表示されますか?<!--@IF: [+comment+]-->
[+comment+]コメントありがとうございます。
<!--@ENDIF-->
Re: チャンク内での条件分岐
例えばcommentプレースホルダに「hoge」と入力して実行したところ、
hogeコメントありがとうございます。
のようにコメント表示されました。
ところで条件分岐の動作確認として、試しに <!--@IF: 0--> と記述するとコメントが非表示となり、<!--@IF: 1--> と記述するとコメントが表示されました。
つまり条件分岐処理は正しく行われているのだと思うのですが、条件として与えた [+comment+] が正しく評価されていないのでしょうか…?
hogeコメントありがとうございます。
のようにコメント表示されました。
ところで条件分岐の動作確認として、試しに <!--@IF: 0--> と記述するとコメントが非表示となり、<!--@IF: 1--> と記述するとコメントが表示されました。
つまり条件分岐処理は正しく行われているのだと思うのですが、条件として与えた [+comment+] が正しく評価されていないのでしょうか…?
Re: チャンク内での条件分岐
値を入力しない場合はどうなりますか?
もしかするとcfFormMailer側の問題かなという気がします。プレースホルダの展開はスニペットによって解釈がまちまちで、MODX本体の処理を使わずスニペット自前の処理で展開することがありますので。
もしかするとcfFormMailer側の問題かなという気がします。プレースホルダの展開はスニペットによって解釈がまちまちで、MODX本体の処理を使わずスニペット自前の処理で展開することがありますので。
Re: チャンク内での条件分岐
すみません、よくよく調べたら cfFormMailer 側で、「入力値が空(NULL)の場合は確認画面表示時に に変換」という機能が実装されていました。私がブラウザ画面上でしか確認していなかったため気付いておりませんでした。大変失礼しました…。
そこで今度は、「comment が でない場合はメッセージを表示する」という処理を行うため以下のように記述したのですが、comment がどのような値でもメッセージが表示されてしまいました。
<!--@IF: [+comment:ne=` `:then=1:else=0+]-->
[+comment+]コメントありがとうございます。
<!--@ENDIF-->
判定処理が行われているか確認するため、1行目を以下のようにして常に 0 が返るようにしてみたのですが結果は同じでした。
<!--@IF: [+comment:ne=` `:then=0:else=0+]-->
文法的に間違っていますでしょうか…?
そこで今度は、「comment が でない場合はメッセージを表示する」という処理を行うため以下のように記述したのですが、comment がどのような値でもメッセージが表示されてしまいました。
<!--@IF: [+comment:ne=` `:then=1:else=0+]-->
[+comment+]コメントありがとうございます。
<!--@ENDIF-->
判定処理が行われているか確認するため、1行目を以下のようにして常に 0 が返るようにしてみたのですが結果は同じでした。
<!--@IF: [+comment:ne=` `:then=0:else=0+]-->
文法的に間違っていますでしょうか…?