We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 33003
    • 26 Posts
    あるカテゴリのページにリンクしたら、直下の最初ページにリダイレクトされるようにしたいと思い、フォルダドキュメントを子ドキュメントへのウェブリンクにしました。
    Wayfinderは、正しく動作してくれるのですが、Breadcrumbsが正しく動作しません。


    ドキュメント階層

    カテゴリ(記事1へのウェブリンク)ドキュメントエイリアス:cat1
     ├記事1 ドキュメントエイリアス:page1 
     └記事2 ドキュメントエイリアス:page2 


    上記で、トップページではグローバルナビゲーションとして、Wayfinderでカテゴリー一覧を表示させて、それぞれクリックするとそのカテゴリーの記事1にリンクします。
    例) カテゴリのリンク先は、 http://www.ドメイン.com/cat1/page1.html となります。

    問題は、記事1、および記事2を表示した時に、Breadcrumbsが「 Home ≫ カテゴリ ≫ 記事1 」となって、カテゴリのリンク先が記事1ではなく、カテゴリに設定したドキュメントエイリアスのURLになってしまいます。
    例) http://www.ドメイン.com/cat1/ というリンクになります。

    そのURLでは、ドキュメントが存在しない為、404エラーになります。(実際は、MODx設定で設定した404ドキュメント)

    Breadcrumbsのバグでしょうか?

    対処としては、.htaccess で記事1にリダイレクトしてあげれば、いいかもしれませんが、いちいちカテゴリ追加の度に変更するのが大変です。
    Wayfinderのように正しいリンクにする方法はないでしょうか?
      • 19033
      • 892 Posts
      こんにちは。

      確信はないのですが、ウェブリンクでリダイレクトするのではなく、
      「FirstChildRedirect」を使ってみてはどうでしょうか。
      本体に同梱されているスニペットです。
      解説 http://www.liolion.info/modx/resource/firstchildredirect.html

      ただ、リンク先の表示は、「http://www.ドメイン.com/cat1/」になりそうな気がします。
      でも、記事1にはリダイレクトしそう。
        • 19033
        • 892 Posts
        または、Breadcrumbsではなく、Wayfinderを使って、パンくずリストを
        出力してはどうでしょうか。Wayfinderは正しく動作しているんですよね。

        うちのサイトのパンくずリストは、Wayfinderです。
          • 36592
          • 970 Posts
          Quote from: yajima at Aug 30, 2008, 05:32 PM

          カテゴリ(記事1へのウェブリンク)ドキュメントエイリアス:cat1
           ├記事1 ドキュメントエイリアス:page1 
           └記事2 ドキュメントエイリアス:page2 

          問題は、記事1、および記事2を表示した時に、Breadcrumbsが「 Home ≫ カテゴリ ≫ 記事1 」となって、カテゴリのリンク先が記事1ではなく、カテゴリに設定したドキュメントエイリアスのURLになってしまいます。
          例) http://www.ドメイン.com/cat1/ というリンクになります。

          そのURLでは、ドキュメントが存在しない為、404エラーになります。(実際は、MODx設定で設定した404ドキュメント)
          Breadcrumbsに限らず、エイリアスパスを「On」で運用するとWeblinkの動作がおかしくなる気がしています。
          個人的には、上記の「http://www.ドメイン.com/cat1/」というURLはWeblinkでも正しく動作するべきだと思います。

          どうやら、このWeblinkは「http://www.ドメイン.com/cat1/index.php?id=XX」にリダイレクト(?)されてしまうようです。
          絶対/相対パス問題なんだと思いますが、MODxのコア部分のどこでやっているかがわかりません... :’(

          そもそも、WayfinderはドキュメントがWeblinkの場合のリンク先URLをエイリアスで出力しません。
          デモコンテンツをインストールしたときにWeblinkが1つ作成されますが、
          これの出力はフレンドリーエイリアスを使用していても「index.php?id=39」となりますよね?
          これは意図的にこうされているように見えます。
          過去にどこかで議論があったのかもしれません...

          ちなみに、MODx APIの「makeUrl()」関数を使ってURLを生成すると、
          Weblinkのドキュメントでもエイリアスが使用されます。
          (Breadcrumbsは多分こうして「http://www.ドメイン.com/cat1/」を生成しているのでは?)
            • 19033
            • 892 Posts
            こんにちは。

            そもそも、WayfinderはドキュメントがWeblinkの場合のリンク先URLをエイリアスで出力しません。
            デモコンテンツをインストールしたときにWeblinkが1つ作成されますが、
            これの出力はフレンドリーエイリアスを使用していても「index.php?id=39」となりますよね?

            これって、「ウェブリンク」のところに「index.php?id=39」となってるからですよね??
            「39」だけにするとリダイレクト先のエイリアスを表示するんですが。。
            ...?じゃ、ウェブリンクのエイリアスってなんのためにあるんだろ...?
              • 33003
              • 26 Posts
              MEGUさん、tkfmさん。

              ありがとうございます!

              パン屑リストをWayfinderで、スッキリ解決です。
              ・・ただ、出力したソースの空白行が気になるのですが(神経質すぎる?)

              とりあえず、404回避できたのでよしとします。 grin

              本当は、「FirstChildRedirect」を使ってみる方法がよかったのですが、すでにカテゴリをウェブリンクで作っていたので、ウェブリンクから通常のドキュメントに変更ができなくて、IDが新たに割り振られると、CSSの変更もあって、今回は、Wayfinderの案を頂きました。

              次回からは、「FirstChildRedirect」も合わせて検討して作るようにします。

                • 33003
                • 26 Posts

                Quote from: MEGU at Aug 31, 2008, 10:32 PM


                そもそも、WayfinderはドキュメントがWeblinkの場合のリンク先URLをエイリアスで出力しません。
                デモコンテンツをインストールしたときにWeblinkが1つ作成されますが、
                これの出力はフレンドリーエイリアスを使用していても「index.php?id=39」となりますよね?

                これって、「ウェブリンク」のところに「index.php?id=39」となってるからですよね??
                「39」だけにするとリダイレクト先のエイリアスを表示するんですが。。
                ...?じゃ、ウェブリンクのエイリアスってなんのためにあるんだろ...?

                WayfinderでWeblinkの出力の件ですが、今回のサイトで見るとウェブリンクのリンク先URLがセットされています。
                フレンドリーエイリアス、エイリアスパスともに使ってます。

                Breadcrumbsが「 Home ≫ カテゴリ ≫ 記事2 」の時。

                Home --> http://www.ドメイン.com
                カテゴリ --> http://www.ドメイン.com/cat1/page1.html
                記事2 --> http://www.ドメイン.com/cat1/page2.html

                こんな感じでして、記事1を表示した場合は、カテゴリと記事1に相当する部分がおなじURLになります。

                Home --> http://www.ドメイン.com
                カテゴリ --> http://www.ドメイン.com/cat1/page1.html
                記事1 --> http://www.ドメイン.com/cat1/page1.html


                Wayfinder は、リンク先がウェブリンクの場合、そのリンク先URLをURLにセットしてくれているんじゃないかと。
                  • 36592
                  • 970 Posts
                  よく調べもせずに先走って書いちゃいました...スミマセン。

                  Quote from: MEGU at Aug 31, 2008, 10:32 PM

                  これって、「ウェブリンク」のところに「index.php?id=39」となってるからですよね??
                  「39」だけにするとリダイレクト先のエイリアスを表示するんですが。。
                  MEGUさんが書かれた通りでした。 tongue

                  ...?じゃ、ウェブリンクのエイリアスってなんのためにあるんだろ...?
                  そうなんですよね~ 常々私の疑問だったことなんです。

                  でも、$modx->makeUrl() というAPIでWeblinkのドキュメントのURLを吐き出させると、
                  ちゃんと普通のドキュメントと同じようにエイリアスを使ったURLを吐き出すんですよ。
                  多分BreadcrumbsはこっちのAPIを使ってるんだと思います。

                  英語圏のフォーラムの過去ログを見てると、これっぽい議論もありますが...?

                  いずれにしてもyajimaさんの疑問は解決したようなので良かったです。

                  追記(2008/09/01 14:16)
                  http://modxcms.com/bugs/task/116
                  ここに、Wayfinderの前身のNewsListingに対する要望として、WeblinkのURLはリンク先のURLであるべきだというものが出されています。下のコメントのところに「Wayfinder」に実装したとの記述も見えます。MODx本体も同様の機能であるべきとの意見もコメントとして書かれて居ますが、そのまま放置されてるっぽいですね~