We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 19033
    • 892 Posts
    Quote from: ling at Mar 25, 2008, 09:40 PM

    [[Wayfinder? &startId=`[!GetField? &field=`id` &parent=`1` &parentLevel=`2`!]`]]
    または、
    [[Wayfinder? &startId=[!GetField? &field=id&parent=1&parentLevel=2!] ]]


    それが上記に書いたトピの件です。↓
    http://modxcms.com/forums/index.php/topic,12443.0.html

    PHxが導入されている場合は、以下でもいいんですが、
    [[Wayfinder? &startId=`[!GetField? &field=`id` &parent=`1` &parentLevel=`2`!]`]]

    PHxが導入されていない場合は、以下の書式で書かないと、値が出力されません。
    [!Wayfinder? &startId=`[!GetField? &field=`id` &parent=`1` &parentLevel=`2`!]`!]

    これは、現時点でのMODxの仕様と言っていいと思います。ほかの場面でも、出くわすことがあるので、
    記憶にとどめておくといいかと思います。
      • 19033
      • 892 Posts
      んー。もし、以下でダメならば、
      [!Wayfinder? &startId=`[!GetField? &field=`id` &parent=`1` &parentLevel=`2`!]`!]


      以下ではどうでしょうか。
      [!Wayfinder? &startId=`[[GetField? &field=`id` &parent=`1` &parentLevel=`2`]]`!]


      パラメータとパラメータの間は、半角スペースを入れてください。
        • 19033
        • 892 Posts
        ためしてみました。

        [!Wayfinder? &startId=`[!GetField? &field=`id` &parent=`1` &parentLevel=`2`!]`!]


        PHxあり 正常出力
        PHxなし `!] が出力される

        [!Wayfinder? &startId=`[[GetField? &field=`id` &parent=`1` &parentLevel=`2`]]`!]


        PHxあり 正常出力
        PHxなし 正常出力

        ということで、PHxが導入れていない場合は、以下の書式になります。
        [!Wayfinder? &startId=`[[GetField? &field=`id` &parent=`1` &parentLevel=`2`]]`!]
          • 36592
          • 970 Posts
          MEGUさんに先を越された... tongue
          [!Wayfinder? &startId=`[[GetField? &field=`id` &parent=`1` &parentLevel=`2`]]`!]

          これで動くはずです。キャッシュの有無が逆でした... :’(

          PHxの件は良く分かりませんが、基本的にMODxではスニペットの多重利用(スニペットのパラメータにスニペットの出力を使うとか、外部のファイルを読み込むスニペットで読み込んだファイル内にまたスニペットが記述されているなど、スニペットのパースされる順番が意味を持つ場合。)をするときは、このようにキャッシュ/非キャッシュ型式を順番に使わなければならないようです。

          デモコンテンツのミニブログでは、Dittoでブログエントリーのサマリーを出力し、その各ブログエントリーのコメント数を出力するのにJotが使われていますが、ここもキャッシュ型式と非キャッシュ型式が順番に使われています。

          キャッシュはMODxを使う上で、結構曲者なので注意が必要ですね~
            • 19033
            • 892 Posts
            MEGUさんに先を越された... tongue
            grin

            tkfmさん。詳しくありがとうございます。
            このようにキャッシュ/非キャッシュ型式を順番に使わなければならないようです。
            なるほど順番も大事なんですね。つまり、今回の場合、GetField が先で、Wayfinder が
            後になるんですよね。

            キャッシュは奥が深いです。。。
              • 17183
              • 20 Posts
              tkfmさん、MEGUさん、ありがとうございました!!助かりました。
              まだまだMODx初心者です、これからもちょくちょくと質問するかもしれないので、またよろしくお願いします!

              [!Wayfinder? &startId=`[[GetField? &field=`id` &parent=`1` &parentLevel=`2`]]`!]

              で解決しました☆!
                • 36592
                • 970 Posts
                ちょうどタイミングよく、スニペットの使い方に関する書き込みが英語版のWikiに上がりましたね~
                http://wiki.modxcms.com/index.php/Snippet_call_anatomy

                「Troubleshooting snippet calls」の欄にちょうどスニペットの引数にスニペットを使うときのキャッシュに関する注意点が掲載されています。
                でも、キャッシュ有無の順序が今回のケースと反対のような... huh
                  • 10105
                  • 51 Posts
                  ここを参考に、同じように

                  スニペッドコードに [!Wayfinder? &startId=`[[GetField? &field=`id` &parent=`1` &parentLevel=`2`]]`!] と記したのですが
                  (スニペッドコードはテンプレートに記述して各ドキュメントに指定)

                  +AAA
                    LBBB
                     LCCC ←カレントドキュメント

                  の場合に、表示されるメニューが、BBBとCCCだけになってしまいます。

                  ちなみに、関係ないかもしれませんが、
                  bodyタグに id="[[GetField? &parent=`1` &field=`id`]]"
                  と指定した場合は(parentLevelはデフォルト)、一つ上の親idではなく、先祖のidを取得します。

                  startidに &startId=`[[GetField? &parent=`1` &field=`id`]]`
                  と指定した場合は(parentLevelはデフォルト)、先祖のidではなく、一つ上の親idを取得します。

                  考えられる原因等ありましたら、ご教授願います。
                    • 36592
                    • 970 Posts
                    Wayfinderはあまり使い込んでいないのですが...
                    Quote from: freakale at Feb 09, 2009, 02:48 AM

                    [!Wayfinder? &startId=`[[GetField? &field=`id` &parent=`1` &parentLevel=`2`]]`!] と記したのですが

                    +AAA
                      LBBB
                       LCCC ←カレントドキュメント

                    の場合に、表示されるメニューが、BBBとCCCだけになってしまいます。
                    これは正しい表示なんじゃないですかね?
                    GetFieldは「AAA」のドキュメントのIDを返してるんですよね?
                    だとすると、Wayfinderが出力するのはその配下のドキュメントのはずですから。

                    bodyタグに id="[[GetField? &parent=`1` &field=`id`]]"
                    と指定した場合は(parentLevelはデフォルト)、一つ上の親idではなく、先祖のidを取得します。
                    &parentLevelのデフォルトはそのツリーの一番上のドキュメントのIDのようですから、
                    一番先祖のドキュメントのIDが返っているのなら、これも正しい動作かと思います。

                    startidに &startId=`[[GetField? &parent=`1` &field=`id`]]`
                    と指定した場合は(parentLevelはデフォルト)、先祖のidではなく、一つ上の親idを取得します。
                    Wayfinderの&startIdパラメータに先祖のIDが渡ってるはずですから、Wayfinderの出力としてはこちらも正しいような気がします。

                    何か勘違いしていますかね? huh
                      • 10105
                      • 51 Posts
                      tkfm さん、ありがとうございます。

                      おかげさまで、私の頭でも理解できました。

                      >>Wayfinderが出力するのはその配下のドキュメントのはずですから。

                      ここを勘違いしていました。

                      &displayStart=`true` で、親自身が出力されるんですね