We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 6350
    • 421 Posts
    親ドキュメント1を非公開にすると別の苦労が増える場合があります。

    たとえばパンくずリストに Breadcrumbs スニペットを使った場合非公開フォルダが表示されないため
    Home >> ドキュメントA となります。

    非公開ドキュメントを表示するオプションもあるかもしれませんがたとえば Wayfinder のパンくずリスト機能を使って非公開ドキュメントを表示させた場合
    Home >> 親ドキュメント1 >> ドキュメントA

    このとき「親ドキュメント1」をクリックすると 404 not found エラーになります。
    したがって非公開のドキュメントを扱う場合はパンくずリストを使わないようにしたほうがいいかもしれません。

    あと SEO Strict URLs を使うと 親ドキュメント1.html を 親ドキュメント1/ と表示できるので ドキュメントAのエイリアスを index にしておけばそちらを見に行く可能性は有りますね。
      • 26012
      • 324 Posts
      Quote from: freakale at Feb 05, 2009, 12:07 PM

      まさにそんな感じなのですが、今現在は、
      ドキュメントA
       └ ドキュメントB
         └ ドキュメントC
      となっていて、試してみた限りでは、
      ドキュメントB、Cともに、GetFieldを呼び出すと、ドキュメントAのaliasを取得
      ドキュメントAでは、GetFieldを呼び出すと、取得できず
      といった状態です。
      ここは腑に落ちません。
      A,B,Cともに[[GetField? &parent=`1` &field=`alias`]]と呼んだ場合の予想結果は次のはずなんですよ。
      parentとdocidを混同してるわけでもなさそうですし・・・
       ドキュメントA : 取得できず
       ドキュメントB : ドキュメントAのaliasを取得
       ドキュメントC : ドキュメントBのaliasを取得

       ※docid  : 指定ドキュメントの情報を返す(デフォルト:現在のドキュメント)
       ※parent :  0 : docidに従って処理、 1 : 現在のドキュメント(またはdocid)の親ドキュメントの情報を返す。 ※0/1どちらか (デフォルト:0)

      Quote from: freakale at Feb 05, 2009, 12:07 PM

      ですので、ドキュメントAがPHxで仕組んだ判定が発動して自分自身のaliasをGETできるようにすればと思ったのですが、
      親ドキュメント1 ←ここを公開せず、何も記述せずにフォルダ扱い
       └ ドキュメントA
         └ ドキュメントB
          └ ドキュメントC
      とすることで、ドキュメントA,B,CともにGetFieldで呼び出して、ドキュメントAのaliasを取得できるので、
      PHxを使わなくてもいいのではと思ったわけです。
      ただ、ドキュメントをそういった扱いにして、不都合が無いのでしょうか?
      とりあえずは、テストすればわかると思うので試してみようと思います。

      やりたいことは以下のことですかね?
      [+phx:if=`[*parent*]`:is=`0`:then=`[*alias*]`:else=`[[GetField? &docid=`[*parent*]` &field=`alias`]]`+]
       または
      [+phx:if=`[*parent*]`:is=`0`:then=`[*alias*]`:else=`[[GetField? &parent=`1` &field=`alias`]]`+]
      
        • 10105
        • 51 Posts
        Quote from: dainiti at Feb 05, 2009, 12:30 PM

        たとえばパンくずリストに Breadcrumbs スニペットを使った場合非公開フォルダが表示されないため
        Home >> ドキュメントA となります。

        親ドキュメントは完全にフォルダとして扱っているので、パンくずリストに非表示で問題ありません。

        で、早速試してみたところ思っていたような結果が得られました。ありがとうございました。 smiley

        ちなみに、以前のWEBサイトの作りが

        www.○○○.com
         |
         |-index.html
         |-folderA
         | └contents01.html
         | └contents02.html
         |-folderB
         | └contents03.html
         | └contents04.html

        のような感じだったので、例えばcontents04.htmlにアクセスするには

        ttp://www.○○○.com/folderB/contents04.html だったので

        MODxに移行後も、同じURLで表示するためにドキュメントをフォルダとして扱ってしまえばと思ったわけです。
          • 10105
          • 51 Posts
          sama55さん、ありがとうございます。
          投稿が入れ違いだったみたいです。

          parentパラメータに関しては、私もそう考えていたのですが

          http://modx.liolion.net/resource/getfield.html を見ると

          parentLevelパラメータで、親ドキュメントのレベルを指定できるようです。

          PHx ありがとうございました。勉強も兼ねて使わせてもらいます。 wink
            • 26012
            • 324 Posts
            Quote from: freakale at Feb 05, 2009, 01:58 PM

            sama55さん、ありがとうございます。
            投稿が入れ違いだったみたいです。

            parentパラメータに関しては、私もそう考えていたのですが
            http://modx.liolion.net/resource/getfield.html を見ると
            parentLevelパラメータで、親ドキュメントのレベルを指定できるようです。
            ああ、確かにそんなこと書いてありますね。見逃してました。
            やっと、freakaleさんの言ってること理解できました(時間割いてもらって申し訳ない)。
            それにしても、まさかこんな仕様だとは驚きました。。。
            さぞfreakaleさんも  huh だったでしょうね。

            Quote from: freakale at Feb 05, 2009, 01:58 PM

            PHx ありがとうございました。勉強も兼ねて使わせてもらいます。 wink
            いや~申し訳ない。教えるつもりが逆に教わっちゃいました。
              • 10105
              • 51 Posts
              sama55さん、申し訳ないのは私の方です。

              実は、とあるMODxユーザーさんのブログでも同じ質問していたのですが、
              親ドキュメントであっても、[[GetField? &parent=`1` &field=`alias`]] で
              親自身のエイリアス取得できているとのことで、もう一度試してみたところ
              確かに問題なく取得できました・・・ shocked

              おそらく、親ドキュメントのテンプレートと子のドキュメントのテンプレートを別のものに設定してしまっていたようです。
              お恥ずかしい限りです・・・。 embarrassed

              お騒がせしてすみませんでした。
                • 26012
                • 324 Posts
                あれま、そうでしたか。 shocked  問題の根が分かってよかったです。

                でも、parentLevelパラメータのデフォルトが0(ルート直下のドキュメントが対象)ってのはどう考えても納得がいきません。
                パラメータ名が"parentIsRoot"などで、0[false]=直接の親(default)、1[true]=ルート直下のドキュメントが対象 なら分かるのですが。
                現状ですと、parentLevelの仕様を知らない人がparentだけを使った場合、素直に直接の親が取れなくて悩むことになりそうです。

                日本人の一般的な解釈では、"parent"は”親”であって、"ご先祖様"じゃないですよね?
                外国人の一般的な解釈では、"parent"は”ご先祖様”なのかな~なんて、深読みしたりして・・・あはは。
                  • 10105
                  • 51 Posts
                  Quote from: sama55 at Feb 08, 2009, 02:25 AM

                  日本人の一般的な解釈では、"parent"は”親”であって、"ご先祖様"じゃないですよね?
                  外国人の一般的な解釈では、"parent"は”ご先祖様”なのかな~なんて、深読みしたりして・・・あはは。

                  私もそう思うことにして納得しようと思ったのですが、昨日Wayfinderのstartidに

                  &startId=`[[GetField? &field=`id` &parent=`1`]]

                  と指定した場合は(parentLevelはデフォルト)、先祖のidではなく、一つ上の親idを取得するみたいです。

                  http://modxcms.com/forums/index.php/topic,24135.msg200116.html#msg200116 の方にも質問させてもらってます。
                    • 26012
                    • 324 Posts
                    Quote from: freakale at Feb 09, 2009, 08:55 AM

                    http://modxcms.com/forums/index.php/topic,24135.msg200116.html#msg200116 の方にも質問させてもらってます。
                    これは、tkfmさんが返答しているとおりで、どちらもご先祖様のIDを取得してるようです。
                    WayFinderも取得されたIDに従って正しく動いてるようなので、不自然な動きには見えません。
                    WyaFinderのStartIdは、リスト出力するドキュメント群の親のID(=parent)を意味し、それ
                    自身は出力ぜずに、子供をリストアップします。

                    スニペットごとに同じ意味を持つ引数がparentとかstartidといった違う名称で表現される
                    ことがよくあるので、判断に迷うことがありますよね。それぞれのスニペットを一緒に考えずに
                    一つ一つゆっくり考えるとわかりやすいかもしれません。
                      • 10105
                      • 51 Posts
                      ありがとうございます。

                      Quote from: sama55 at Feb 09, 2009, 12:30 PM

                      WyaFinderのStartIdは、リスト出力するドキュメント群の親のID(=parent)を意味し、それ
                      自身は出力ぜずに、子供をリストアップします。


                      またまた勘違いしていました・・・。 おかげで理解できようやく作業が進みそうです。(多分・・・)

                      また的外れの書き込み、質問するかと思いますが、よろしくお願いしますm(__)m