We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 25850
    • 16 Posts
    こんにちわ。
    autolink ver2を導入しました。Modx は0.9.6.3です。
    キーワードが英語(たとえば「MODx」や「test」)では動作しますが、日本語(たとえば「テスト」)では動作しません。
    対処法は無いでしょうか?
    • モジュールのコードを見てみると
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      このようにハードコードでcharset=iso-8859-1がセットされてます。これが原因とは限らないかもですが、とりあえずutf-8にしてから試してみるとよいかも。
        • 25850
        • 16 Posts
        試してみました。変化ないです・・・。
        2byte文字だと問題なく動いているのですが・・・。

        ほかにチェックするべきところはあるでしょうか?
          • 26012
          • 324 Posts
          使ったことがないのでよく分からないのですが、abbrやacronymで囲む発想からして、「そもそも日本語で動かすようなことを想定してない(動かなくて正解)」ということはないでしょうか?
            • 25850
            • 16 Posts
            そうですか・・・残念。
            特定のキーワードをハイライト表示させたいのですが、他に方法は無いでしょうか?
            • autolinkだとオーバースペックだし目的自体が微妙に違う感じですね。使えなくはないみたいですが・・

              $modx->documentObject[’content’] = str_replace(’MODx’, ’<strong style="color:red;">モドエックス</strong>’, $modx->documentObject[’content’]);

              適当な名前でプラグインを作ってシステムイベント「OnLoadWebDocument」にチェックを入れて、上記のコードを書いて保存すると最低限の置換(ハイライトなど)はできるようになります。複数の単語を対象にする時は配列を使う・・とか、あとはphpの話になってきますが・・
                • 26012
                • 324 Posts
                プラグインを作るのなら、Search Highlightingを使っちゃう、というのはどうでしょう?特定な用語(複数)をハイライトできればよいのですよね?言い方を変えると、Search Highlightingの親であるAjaxSearchを真似て、呼出専用の簡単なプラグインを作る、ということ。すべての処理を自前で作るより簡単な気がします。用語リストの持ち方はテンプレート変数ですかね。
                • そのほうがよいかもですね。単純置換だとタグの中身まで対象にしてしまうし。(Search Highlightingは大丈夫だったはず)
                    • 25850
                    • 16 Posts
                    お返事遅くなりました。

                    Search Highlightingでのやり方がわからず(phpはまったく使ったことがないもので・・・)、とりあえずyamaさんのプラグイン作戦で解決しました。
                    置換したいのが日本語のキーワードなので、とりあえず大丈夫かな・・・と。

                    助かりました!いつもありがとうございます。

                    ↓↓↓作ったのはこんな感じ↓↓↓
                    //強調表示するテキストを入力
                    $list = array("キーワード1", "キーワード2", "キーワード3");
                    //リストの数を数える
                    $ct = count($list);

                    //スタイルの定義
                    $style1 = ’<strong style="color:red;">’;
                    $style2 = ’</strong>’;

                    //リストの数だけ、置換を行う
                    for ($a=0; $a<$ct; $a++){
                    //リストの文字とスタイルの連結
                    $strong = $style1.$list[$a].$style2;
                    //置換実行
                    $modx->documentObject[’content’] = str_replace($list[$a], $strong, $modx->documentObject[’content’]);
                    }