スニペット記法+内蔵PHx出力のモディファイア内での`?` 【解決済み】
スニペット記法+内蔵PHx出力のモディファイア内での`?`
お世話になっております。
PHxのthen:elseをログイン情報などユーザ固有値に基づいて使用することがあり、
この場合、キャッシュさせないため、[! !]で書いていたりするのですが、
[!スニペット:is=`1`:then=`1`:else=`2`!]
[!スニペット:is=`1`:then=`?1`:else=`2`!]
↑パラメータに?が含まれると動作しないようです。
スニペット記法のパースのせいですかね。
then:elseの中身はリンクURLだったりすることが多いので、`index.php?id=1`みたいなものが書けなくて困ってしまいました。
出力結果を見ると、?の前までしか出力されない(前行の例だとindex.phpまで)ようです。
これを回避する手段が、何かありますでしょうか。
PHxのthen:elseをログイン情報などユーザ固有値に基づいて使用することがあり、
この場合、キャッシュさせないため、[! !]で書いていたりするのですが、
[!スニペット:is=`1`:then=`1`:else=`2`!]
[!スニペット:is=`1`:then=`?1`:else=`2`!]
↑パラメータに?が含まれると動作しないようです。
スニペット記法のパースのせいですかね。
then:elseの中身はリンクURLだったりすることが多いので、`index.php?id=1`みたいなものが書けなくて困ってしまいました。
出力結果を見ると、?の前までしか出力されない(前行の例だとindex.phpまで)ようです。
これを回避する手段が、何かありますでしょうか。
Re: スニペット記法+内蔵PHx出力のモディファイア内での`?`
お待たせしました。添付のファイルを解凍してmanager/includes/ディレクトリに上書きしてみてください
Re: スニペット記法+内蔵PHx出力のモディファイア内での`?`
すみません。よこから失礼します。
私も kazh さんと同様な状況でして、便乗させてください。
yama さんからいただいたソースを適用したのですが、正しく動作しないところも発生したためご相談です。
以下のように スニペットのパラメータをスニペットで生成している場合に、echo_id スニペットが動作しないようです。
[!Ditto?&tpl=`@CODE:[+id+],`&id=`id1`&documents=[!echo_id?&id=`8`!]!]
以下にテストサイトを作成しました。
(とはいえ、パッチが当たっていないので、問題なく動作します。パッチをあてたら動作しないと思います。)
http://150619142146-19507.evo.demo.modx.jp/manager/
もし、スニペットの呼び出しが誤っていたらごめんなさい。
> 1816 if($pos['?'] !== false && $pos['?']<$pos[':'])
を元に戻すと、 ? は利用できませんが、他は大丈夫でした。
込み入った部分なので、手出しができなく、ご報告のみとなります。
私も kazh さんと同様な状況でして、便乗させてください。
yama さんからいただいたソースを適用したのですが、正しく動作しないところも発生したためご相談です。
以下のように スニペットのパラメータをスニペットで生成している場合に、echo_id スニペットが動作しないようです。
[!Ditto?&tpl=`@CODE:[+id+],`&id=`id1`&documents=[!echo_id?&id=`8`!]!]
以下にテストサイトを作成しました。
(とはいえ、パッチが当たっていないので、問題なく動作します。パッチをあてたら動作しないと思います。)
http://150619142146-19507.evo.demo.modx.jp/manager/
もし、スニペットの呼び出しが誤っていたらごめんなさい。
> 1816 if($pos['?'] !== false && $pos['?']<$pos[':'])
を元に戻すと、 ? は利用できませんが、他は大丈夫でした。
込み入った部分なので、手出しができなく、ご報告のみとなります。
Re: スニペット記法+内蔵PHx出力のモディファイア内での`?`
コード: 全て選択
if($pos['?'] !== false && ($pos[':']===false || $pos['?']<$pos[':']))
http://150619142146-19507.evo.demo.modx.jp/1.html
サンプルのほうも変更しました
Re: スニペット記法+内蔵PHx出力のモディファイア内での`?`
yama 様
早速対応いただき、ありがとうございます。
適用をしてみました。
提示させていただいた、サンプルは改善しなかったのですが、同様な処理を行っている内部のサイトでは改善したかもしれません。
サンプルが改善しなかったのが気になります。。
早速対応いただき、ありがとうございます。
適用をしてみました。
提示させていただいた、サンプルは改善しなかったのですが、同様な処理を行っている内部のサイトでは改善したかもしれません。
サンプルが改善しなかったのが気になります。。
Re: スニペット記法+内蔵PHx出力のモディファイア内での`?`
> 提示させていただいた、サンプルは改善しなかったのですが、
サンプルサイトは治ってますね。あとは私の手元サイト。。
手元サイトは、見直すと、
1809 $pos[':'] = strpos($call, ':');
が抜けてました。
問題なく動作しました。
ありがとうございます!
サンプルサイトは治ってますね。あとは私の手元サイト。。
手元サイトは、見直すと、
1809 $pos[':'] = strpos($call, ':');
が抜けてました。
問題なく動作しました。
ありがとうございます!
最後に編集したユーザー iwa [ 2015年6月19日(金) 15:03 ], 累計 1 回
Re: スニペット記法+内蔵PHx出力のモディファイア内での`?`
ifの前に $pos[':'] = strpos($call, ':'); を追記する必要があります
Re: スニペット記法+内蔵PHx出力のモディファイア内での`?`
yama 様
五月雨になってすみません。
最後にお教えいただいたパッチでも、以下の処理が NG になってしまいます。
先ほどのサイトに環境を作りました。本来であれば「しん」「ぎ」と表示されなければならないのですが「ぎ」「ぎ」になってしまいます。
パッチを元に戻すと問題ありません。
http://150619142146-19507.evo.demo.modx.jp/manager/
2.html です。
五月雨になってすみません。
最後にお教えいただいたパッチでも、以下の処理が NG になってしまいます。
コード: 全て選択
<!--@IF [!echo_id:is(`1`):or:is(`2`)?id=`1`!]-->
しん!
<!--@ELSE-->
ぎ!
<!--@ENDIF-->
<!--@IF [!echo_id:is(`1`):or:is(`2`)?id=`3`!]-->
しん!
<!--@ELSE-->
ぎ!
<!--@ENDIF-->
パッチを元に戻すと問題ありません。
http://150619142146-19507.evo.demo.modx.jp/manager/
2.html です。
Re: スニペット記法+内蔵PHx出力のモディファイア内での`?`
お返事が遅くなりましたが、土曜日の時点でこの件確認しました。当トピック自体の問題があることが分かったので(※想定以上に精密なパース処理が必要になる)、いったん元の状態に戻した上で対症療法的な方法を提案させてもらうことになると思います。また改めて連絡いたします。
Re: スニペット記法+内蔵PHx出力のモディファイア内での`?`
yama 様
ご返事、ご検討いただきありがとうございます。
引き続きよろしくお願いします
ご返事、ご検討いただきありがとうございます。
引き続きよろしくお願いします
Re: スニペット記法+内蔵PHx出力のモディファイア内での`?`
yama 様
ありがとうございます。
提示させていただいた処理については動作しているようですが、基本的な動作に疑問が残りました。
echo_id スニペットを作成し
参照したのですが、 false になってしまいます。
記述に誤りがあるかもしれません。
確認サイトをお知らせします。
http://150629110830-13791.evo.demo.modx.jp/manager/
ありがとうございます。
提示させていただいた処理については動作しているようですが、基本的な動作に疑問が残りました。
echo_id スニペットを作成し
コード: 全て選択
echo $id;
コード: 全て選択
[!echo_id:is=(1):then=(true):else=(false)?id=1!]
確認サイトをお知らせします。
http://150629110830-13791.evo.demo.modx.jp/manager/
Re: スニペット記法+内蔵PHx出力のモディファイア内での`?`
masco 様
ありがとうございます。
ご指摘いただいた内容で解決しました。
ありがとうございます。
ご指摘いただいた内容で解決しました。
Re: スニペット記法+内蔵PHx出力のモディファイア内での`?` 【解決済み】
yama様
亀レスになってしまい申し訳ございません。
ご対応ありがとうございました。
亀レスになってしまい申し訳ございません。
ご対応ありがとうございました。