We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 19033
    • 892 Posts
    tkfmさん。こんにちは。
    うちの環境でも確認できました(とりあえず095で)。

    docid55のエイリアスには「modx_indx.xml」、
    seoOverrideでは「Base Name」を指定、
    MODx設定では、接尾語を「.html」にしている場合、

    単に、ドキュメントやテンプレートに[~54~]と書くと「modx_index.xml.html」なります。
    ただし、<a href="[~54~]">の様に利用した場合は、「modx_index.xml」になります。

    ---*---*---*---*---*---
    といいますか、アレですね。
    単に[~id~]とした場合は、出力結果にSEO Strict URLsが適用されない?みたいですよね。
    たとえば、エイリアスに「test」として「Base Name」にすれば、「/test」でアクセス
    できますけれども、[~id~]の出力結果は「test.html」になってますよね。

    それなので、もし、単に[~id~]の結果が欲しい場合は、「GetField」で「alias」を拾うとか。。
      • 36592
      • 970 Posts
      MEGUさん わざわざ確認頂き有難うございます。
      Quote from: MEGU at Aug 16, 2007, 01:47 AM

      単に、ドキュメントやテンプレートに[~54~]と書くと「modx_index.xml.html」なります。
      ただし、<a href="[~54~]">の様に利用した場合は、「modx_index.xml」になります。
      単に[~id~]とした場合は、出力結果にSEO Strict URLsが適用されない?みたいですよね。
      リンク先URLとして使用するとちゃんと出力されるんですね~
      [~id~]だけを表示させて表示がおかしいため悩んでいました...
      イマイチしっくり来ませんが、とりあえず「そういうもの」と理解しておきます。笑
        • 33072
        • 25 Posts
        SEO Strict URLs のソース内でpreg_replace()関数の中で

        (href|action)=[\"’]


        を削除すればすべからく置換してくれると思います。

        試してませんが。 grin
          • 36592
          • 970 Posts
          yassiさん こんばんわ~ ご指摘有難うございます。
          Quote from: yassi at Aug 16, 2007, 04:53 AM

          SEO Strict URLs のソース内でpreg_replace()関数の中で
          (href|action)=[\"’]

          を削除すればすべからく置換してくれると思います。
          PHP初心者故に、ご指摘頂いた内容が理解できていませんが、
          スニペットのソースでは「意図的に」このようにしているということでしょうか?
          それともyassiさんのご指摘の対策をすると、何らかの他のケースで悪さが起こるんですかね?
            • 19033
            • 892 Posts
            こんにちは~。。
            私も、yassiさんのお話が良く理解できていないんですけども。。

            もしやと思って、試してみたのですが、
            単に[~55~]と書いた場合に「sample.xml.html」となってしまうだけでなく、
            たとえば、<script type="text/javascript" src="[~55~]" />とかして、Base Name を選んでも
            「.html(接尾辞)」がくっついて来ちゃうんですね。。

            おおざっぱに言うと、条件として、href とaction の場合に置き換える処理を行っていると言うことなんでしょうか。
            私もなぜその様になっているのか知りたいです~。
              • 33072
              • 25 Posts
              えー、理由は作者さんに聞いてみないと分かりません。 grin
              ただ、プラグインの目的がSEO対策ですからhrefやactionで十分だと考えたのではないでしょうか。
              <script type="text/javascript" src="[~55~]" />
              なども対象にしたいのであれば、
              (href|action)=[\"’]


              (href|action|src)=[\"’]

              に変更すれば出来ると思います。
              例によって試してませんが。 grin
                • 19033
                • 892 Posts
                おお~。yassiさん。
                どうもありがとうございます!できました laugh
                  • 36592
                  • 970 Posts
                  Quote from: yassi at Aug 16, 2007, 01:39 PM

                  ただ、プラグインの目的がSEO対策ですからhrefやactionで十分だと考えたのではないでしょうか。
                  う~ん、「なるほど!」と言うべきか...笑

                  いずれにしても、私の環境の問題ではなくて、もともとそういう仕様だということが理解できました!
                  また、改造のポイントもご指摘頂きましたので、これから使うときに注意しますね~

                  ありがとうございました。
                    • 10105
                    • 51 Posts
                    古いトピですが、同じところでハマっているので宜しくお願いします。

                    yassiさんの
                    SEO Strict URLs のソース内でpreg_replace()関数の中で

                    (href|action)=[\"’]

                    を削除すればすべからく置換してくれると思います。

                    試してませんが。
                    とあるのですが、

                    $o = preg_replace("#((href|action)=[\"’]($baseUrl)?($overridePath/)?|$myDomain$baseUrl$overridePath/?)$overrideAlias$furlSuffix([^\w-\.!~\*\(\)])#", ’${1}’ . $overrideAlias . ’${5}’, $o);
                    // $o = preg_replace("#((href|action)=\"($baseUrl)?($overridePath/)?|$myDomain$baseUrl$overridePath/?)$overrideAlias$furlSuffix#", ’${1}’ . $overrideAlias, $o);

                    を、

                    $o = preg_replace("#(($baseUrl)?($overridePath/)?|$myDomain$baseUrl$overridePath/?)$overrideAlias$furlSuffix([^\w-\.!~\*\(\)])#", ’${1}’ . $overrideAlias . ’${5}’, $o);
                    // $o = preg_replace("#((href|action)=\"($baseUrl)?($overridePath/)?|$myDomain$baseUrl$overridePath/?)$overrideAlias$furlSuffix#", ’${1}’ . $overrideAlias, $o);
                    (他2カ所も同じ)

                    のようにしてしまうと、閉じる部分のダブルコーテーションが消えてしまいます。 

                    ものすごい基本的なところかもしれませんが、よろしくお願いします。
                      • 33072
                      • 25 Posts
                      不用意な発言でご迷惑をおかけしてしまったようで申し訳ございません。
                      変更された部分
                      $o = preg_replace("#(($baseUrl)?($overridePath/)?|$myDomain$baseUrl$overridePath/?)$overrideAlias$furlSuffix([^\w-\.!~\*\(\)])#", '${1}' . $overrideAlias . '${5}', $o);

                      の最後の方にある${5}を${4}に変えてみてください。
                      他の変更された部分の同じような場所も、数字の部分を1引いたものにしてみて下さい。
                      例えば、${6}であれば${5}にする、といったような感じにです。
                      ちょっと時間がないので試していませんが、恐らくこれでうまくいく、と思います。