ページ 11

Wayfinder RowTpl内に入れ子にしたWayfinderが動かないが「'」で動く  【解決済み】

Posted: 2014年11月04日(火) 12:13
by min-o
-----
ご利用のサーバ:ASP
MODXのバージョン:1.0.14J → 1.0.14J-r5 → 1.0.14J-r6-b2
PHPのバージョン: 5.5.8
MySQLのバージョン: 5.6.15-log
ブラウザ:firefox 32.03
phx 2.2.0
-----

いつもお世話になっております。
アップデート後、WayfinderのRowTpl内、以下のように記述した入れ子Wayfinderが動かなくなりました。
Wayfinder自体はテンプレートに記述してあります。
<li[+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[*SubMenuSupportCF:is=`その他`:then=`[[Wayfinder? startId=`947` &level=`1` &includeDocs=`58,948` &ignoreHidden=`1`]]`:else=``*]</li>
[[Wayfinder? startId=`947` &level=`1` &includeDocs=`58,948` &ignoreHidden=`1`]]のみをリソースのcontent部分に記述すると、テンプレートのWayfinderの方も表示されます。

phxはうごいているようだったので
http://forum.modx.jp/viewtopic.php?f=32&t=1472&p=7953
を見てためしに入れ子部分の`→' に変更
<li[+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[*SubMenuSupportCF:is=`その他`:then=`[[Wayfinder? startId='947' &level='1' &includeDocs='58,948' &ignoreHidden='1']]`:else=``*]</li>
にすると表示されました。

また
<li[+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[*SubMenuSupportCF:is=`その他`:then=`{{チャンク}}`:else=``*]</li>
とチャンクにした場合は`のままでも ' に変更したものでも表示されました。

数が多いと修正が大変なので、あらかじめ入れ子にした場合の扱いのルールがあるとよいと思います。

Re: Wayfinder RowTpl内に入れ子にしたWayfinderが動かないが「'」で動く

Posted: 2014年11月04日(火) 13:25
by yama

コード: 全て選択

:then=`[[Wayfinder? startId=`947` &level=`1` &includeDocs=`58,948` &ignoreHidden=`1`]]`
この部分が関係しているみたいですね。区切り文字列の問題のように見えますが、モディファイア文字列を先にまるごとパースしてしまうとよさそうな気がします。後ほど調べてみます

Re: Wayfinder RowTpl内に入れ子にしたWayfinderが動かないが「'」で動く

Posted: 2014年11月19日(水) 16:11
by yama
こちらの件、
http://forum.modx.jp/viewtopic.php?f=34 ... 7965#p7965
1.0.14J-r6-b3で解決できるでしょうか?

Re: Wayfinder RowTpl内に入れ子にしたWayfinderが動かないが「'」で動く

Posted: 2014年11月19日(水) 16:25
by min-o
1.0.14J-r6-b3 で確認しましたが、症状同じです。

` → ダメ
[[Wayfinder? startId=
だけ出力

' → OK
チャンクにした場合はどちらもOK

です。

Re: Wayfinder RowTpl内に入れ子にしたWayfinderが動かないが「'」で動く

Posted: 2014年11月19日(水) 23:05
by yama
最新仕様について、整理です
<li[+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[*SubMenuSupportCF:is=`その他`:then=`[[Wayfinder? startId=`947` &level=`1` &includeDocs=`58,948` &ignoreHidden=`1`]]`:else=``*]</li>
上記の記述のうち、
<li[+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[*SubMenuSupportCF:is=`その他`:then=`[[Wayfinder? startId=`947` &level=`1` &includeDocs=`58,948` &ignoreHidden=`1`]]`:else=``*]</li>
問題になるのは上記の部分
最新の仕様では、 ` (バッククォート) を ' (シングルクォート) に書き換えることで、区切り文字としてのシングルクォートに囲まれた部分には、バッククォートや :else=`` などの文字列を自由に含ませることができるようになっていて、プラスマイナスでいえば、自由度は高くなっていると思います。シングルクォートの他には、ダブルクォートを用いることもできます。逆に、パラメータの値としてシングルクォートやダブルクォートを含ませたい場合は、バッククォートを用いることができます。
つまり、3種類の区切り文字があって、どれでも自由に選んで使えるので、パラメータの値にそれらの文字を含ませたい場合は、それ以外の文字を区切り文字として用いるということになります。

問題となっているのは、これまで動作していたものが動作しなくなっているので、互換性ですね。少し考えてみます。

Re: Wayfinder RowTpl内に入れ子にしたWayfinderが動かないが「'」で動く

Posted: 2014年11月20日(木) 11:12
by min-o
つまり、3種類の区切り文字があって、どれでも自由に選んで使えるので、パラメータの値にそれらの文字を含ませたい場合は、それ以外の文字を区切り文字として用いるということになります。
なるほど。たしかに仕様としてはこのほうが便利ですね。

過去バージョンからの互換性あるとありがたいです。よろしくお願いします。

Re: Wayfinder RowTpl内に入れ子にしたWayfinderが動かないが「'」で動く

Posted: 2014年11月20日(木) 14:28
by yama
デモサイトでサンプルを作っていただいてよいでしょうか?そのサンプルを使って動作するように調整してみます

Re: Wayfinder RowTpl内に入れ子にしたWayfinderが動かないが「'」で動く

Posted: 2014年11月20日(木) 16:50
by min-o
OSC 2014 Tokyo/Fall セミナー用デモ 1.0.14J-r5
で作ってみました。
http://141120154808-27396.evo.demo.modx.jp/1/

hr下のメニュー xRayテンプレートに
<hr />
[[Wayfinder? &startId=`0` &rowTpl=`SubNaviSupportOther.RowTpl`]]
SubNaviSupportOther.RowTpl チャンクに
<li[+wf.classes+]><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>[*SubMenuSupportCF:is=`その他サポート`:then=`[[Wayfinder? startId=`26` &level=`1` &includeDocs=`29,28` &ignoreHidden=`1`]]`:else=``*]</li>
です。
` (バッククォート) を ' (シングルクォート) にすると [[Wayfinder? startId= は消えます。

※xRay(2) でも aquatic(3) でも Wayfinderで「公開」「メニューに表示」の他のリソース
-blog (16) ←公開した
-tag (19)
-WFテスト用 (26) ←新規作成
が表示されないのがですが、これはどこかでなにか設定されてるのでしょうか?

Re: Wayfinder RowTpl内に入れ子にしたWayfinderが動かないが「'」で動く

Posted: 2014年11月20日(木) 21:10
by yama
http://141120154808-27396.evo.demo.modx.jp/1/
仮調整してみました。いかがでしょうか?

Re: Wayfinder RowTpl内に入れ子にしたWayfinderが動かないが「'」で動く

Posted: 2014年11月25日(火) 10:02
by min-o
>yamaさん
せっかく調整していただいたのに、週末メールを見れなかったので、
デモサイトのページがなくなってしまいました。
申し訳ありません。

もう一度デモサイトで作った方がいいでしょうか?

Re: Wayfinder RowTpl内に入れ子にしたWayfinderが動かないが「'」で動く

Posted: 2014年11月25日(火) 11:00
by yama
http://forum.modx.jp/viewtopic.php?p=7995#p7995
こちらを試していただいてよいでしょうか?たぶん修正できていると思います。

Re: Wayfinder RowTpl内に入れ子にしたWayfinderが動かないが「'」で動く

Posted: 2014年11月26日(水) 12:43
by min-o
yamaさん
返信ありがとうございます。

modx-1.0.14J-r6-b5 でうまくいきました。
` (バッククォート) でも問題ないです。

ありがとうございました :D