We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 20882
    • 9 Posts
    現行のサイトをMODxで管理しようと、インポートを行ったのですが、
    深い階層にあるリンク等のパスが正しくインポートされてないようです。

    例)
     現行のHTMLでの記述  href="../../aaa.html"
     インポート後の記述    href="../aaa.html"

    どうやら、複数階層のリンクが正しくインポートされていないようですが、
    どうすれば正しく動作させるように出来るのでしょうか?
    もしくは、このような仕様で、個別に変更するしかないのでしょうか?

    どなたか、ご教示の程、おねがいします。
      • 26012
      • 324 Posts
      naiさんはじめまして

      少々古い(2年以上前)の記事ですが、import機能について語られてるトピは以下のようです。
      http://modxcms.com/forums/index.php/topic,1423.msg18257.html#msg18257
      当時のライアン氏の見解によれば、仕様書と呼べるものはないようで、トピの最後でOpenGeek氏が簡単に説明してます。
      「簡単なソースだから自分仕様に直して使ってください」と言及されてます(そう言われてもね・・・)。

      Quote from: nai at Jun 10, 2009, 07:09 AM

      個別に変更するしかないのでしょうか?
      そのようです。

      使ったことがないので、以下はソースを見た所感です。記述に誤りがありましたらどなたか補正してください。
      ----
      インポート機能はサイトを丸ごとローカルPCに取り込むようなブラウザのインポート機能や類似アプリケーションに見られるHTML内の構造を精査するようなインテリジェントなものではなく、単にファイルの中身をドキュメントとして取り込む補助的な機能である。以下は細かい仕様。

       ・管理画面で現在選択されているドキュメントの配下に取り込む
       ・フォルダはフォルダドキュメントになる
       ・html, htm, xmlのテキストファイルのみ処理される
       ・ドキュメントの生成規則 :
         type : "document"
         contentType : "text/html"
         alias : 拡張子を除いたファイル名(一意性を保つためにユニークIDが付加される場合あり)
         pagetitle : <title>タグの内容が反映される(ない場合は拡張子を除いたファイル名)
         content  : <body>タグの内容が反映される(ない場合はファイル全体)
         その他 : 管理画面でドキュメントを新規に作成する時と同じ
        • 20882
        • 9 Posts
        sama55さん、ありがとうございます。

        その後、色々と試していてわかったのですが、
        グローバル設定で使用エディターを「なし」以外にした状態で
        各ページを編集状態にし、内容入力欄下の使用エディターを変更した場合に
        リンクの上位階層参照部分(src="../../xxx")がおかしくなるようでした。

        試しに、グローバル設定の使用エディターを「なし」にして、
        インポートされた内容を表示させてみたところ、正しく取り込まれていました。

        WYSIWYGエディター全般で発生するかどうかはわかりませんし、
        「src」「href」以外の部分ではそのままになっていたりするので注意が必要な感じです。
         ↑javascriptへの引数(マウスオーバーでのスワップイメージ)はそのままでした。
        どうもWYSIWYGエディタへのデータ受け渡しに問題がありそうな感じですが、
        僕では原因特定まで出来そうもないので、どなたかわかる方が居ましたら、調べてもらえればと思います。
        • それはたぶん、MODxでのTinyMCE(WYSIWYGエディタ)設定が

          http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/relative_urls
          relative urls : true

          http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/document_base_url
          document_base_url : MODxをインストールしたディレクトリ

          になってるからだと思います。投稿画面は manager/で開いているので、その関係で判別を誤ってるのかも。relative urlsは、URLを相対記述とするという指定で、document_base_urlは、投稿画面は xxxというディレクトリ階層に置いてるけど実際に表で表示するページの基準位置はここだよ、という指定と解釈していいのではと思います。投稿画面は表より1階層低いmanager/で開かれるので、1階層繰り上げてurlを表現してしまうのかもしれませんね。実用を考えてちゃんと作ってあるエディタなら、だいたいこういう仕掛けがあるように思います。ぼくの解釈は間違ってるかもしれないけど(間違ってそうな気はする)、だいたいこのへんの指定が絡んでるということは言えそうに思います。

          こういう間違いが起きにくいようにするには、httpまたはインストールルート位置( /とか/modx/とか)からの絶対指定にするといいのですが、すると今回話題になってるような、インポート時点での適切なhrefロケーションのコンバートが必要になると思います。
            • 26012
            • 324 Posts
            なるほど。
            ソースを見てもそれらしき処理がないので、「なんで?」って感じだったのですが、RTEで合点がいきました。yamaさんきっとビンゴですよ。
            Quote from: yama at Jun 11, 2009, 06:32 AM

            http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/relative_urls
            relative urls : true
            http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/document_base_url
            document_base_url : MODxをインストールしたディレクトリ
            こういう間違いが起きにくいようにするには、httpまたはインストールルート位置( /とか/modx/とか)からの絶対指定にするといいのですが、すると今回話題になってるような、インポート時点での適切なhrefロケーションのコンバートが必要になると思います。
            document_base_urlで騙して取り込めそうですが、取り込み後の運用で問題が出そう。
            絶対パスにコンバートしてから取り込むか、RTE-OFFで取り込んだ後にSQL文で一括置換とかの方が安全・確実かも。
              • 20882
              • 9 Posts
              yamaさん、sama55さんありがとうございます。

              その後、TinyMCEの設定に
               document_base_url : "/modx/manager/",
               relative_urls : true
              を追加して、URL問題は簡潔したような感じがします。
              ただ、これでも画像は「x」付きますけど・・・
              ※現在は /modx/ にインストールしてます。

              ちなみに
               document_base_url : "/modx/"
              にすると、「../../aaa.html」→「../aaa.html」に、
               document_base_url : "/"
              にすると、「../../aaa.html」→「aaa.html」に、
              なりました。
              また、
               document_base_url : "/modx/xxx/"
              でも "/modx/manager/" と同様の動作だったので、階層だけ見ているみたいです。


              。。。これって、私が今使っている場所特有の症状なんでしょうかね??
              • んー、その設定だとイレギュラーですね。document_base_url オプションってのは何かというと、投稿画面は/xxx/yyy/で開いてるけど、実際のページは/xxx/上にあるんだよ。ってことをTinyMCEに教えてあげるためのものです。なぜこのようなオプションが必要なのかというと、TinyMCEはWYSIWYGエディタなので、画像のパスをテキストで記述するだけじゃなくて、その画像自体を画面上に表示してあげる必要がありますよね。この時、TinyMCEが何も知らない場合、投稿画面を開いている階層が実際と違う場合は(たいていのCMSは違うはずですが)、階層がズレるため画像を投稿画面上で表示できなくなってしまいます。このズレを補正するためのオプションです。そしてdocument_base_urlというくらいなので、httpから始まる絶対記述である必要があります。今回の場合だと、http........./modx/ と記述するのが正解ですね。実際は設置ルートからの記述でも正しく判定できるようになっているみたいですが。

                それだけで期待どおりの動作になるわけではなくて、あとrelative_urlsオプションとconvert urlsオプションの調整が必要になります。今回は相対記述のままにしておきたいのだと思うので、relative_urlsはtrueでいいですよね。convert urlsは0963同梱のTinyMCEプラグインには記述されてないかもしれませんが、その場合は値がtrueになってます。これは相対指定の場合はfalseにすべきだったかもしれません。

                TinyMCE自体はこのへんの判定はシンプルで、バグはないものとして信用していいと思います。document_base_url・relative_urls・convert urlsこの3つのオプションの組み合わせで正しく判定できるように調整を試みるとよいのではと思います。MODx側の実装に問題がある可能性は少しありますが・・たぶん大丈夫ではと。
                  • 20882
                  • 9 Posts
                  yamaさんありがとうございます。

                  document_base_url、relative_urls、convert_urls
                  この3つを「Custom Parameters」に下記のように記述してみました。

                   document_base_url : http://*****/modx/
                   relative_urls : true
                   convert_urls : false

                  その結果、正しく、表示されるようになりました。
                  画像ファイルが「asset/images」に無いためと思いますが、画像は表示されませんね^^;

                  とりあえず、HTML記述に関しては、問題解決することができました。

                  どうもありがとうございました。
                  • asset/images以外に置いている画像でも表示されるはず。convert_urlsの指定のみが有効になってる気がします。Custom Parametersの部分がどういう実装になってるのか確認する必要がありそうですね。
                      • 20882
                      • 9 Posts
                      その後、テンプレートなどをいじっているうちに、画像に関しても正しく表示されるようになりました。

                      どうやら、baseタグを記載してないページがあったようで、、、お騒がせしました