NP_SearchedPhrase|文字化け解消とハイライトの工夫
NP_SearchedPhrase|文字化け解消とハイライトの工夫
- Author : pushman|Nucleus|2005-10-17 Mon 01:42
-
サイト再開時はシンプルにいこうと決めていたのですが、やはり欲が出てきていろいろ拡張しちゃってます。今回導入したのは、検索サイト経由で当サイトに来た場合、その検索語句をハイライトしてくれたり、検索語句のランキングを表示する、来訪者に優しいプラグイン「NP_SearchedPhrase」です。作者はもうずっと以前からNucleusを支えている「higuchi」さんです。ありがとうございます。
意気揚々とインストールして、あっという間に設置成功したのですが、Google経由の検索語句がいきなり文字化け…かなり苦労しましたが「な!自転車でやせる >> NP_SearchedPhrase(585)」を参考にして、あっという間に修正できました。
NP_SearchedPhrase.phpで「mb_convert_kana」を検索すると1ヶ所だけ見つかりますので、第3パラメータに「'auto'」を追加するだけです。ありがとうございます。文字化け自体はこれで直りましたが、まだまだ検索経由での来訪は少ないので、今後も修正が必要になるかも知れません。どきどきです。
あとは表示調整ということで、今までの検索語句をPhp-Statsより拾ってきて、自分で各検索エンジンで検索して自分のサイトをクリック。するとその検索語句がNP_SearchedPhraseに登録されます。そして、そのページでは検索語句がハイライトされるわけですが、何度かハイライト表示が機能していない場合がありました。どうやら複数の検索語句を全角のスペースで区切ると、そのスペースを含めた一つの単語と認識されているようです。ハイライト表示自体はNP_SearchedPhraseに内包(?)されているJavaScriptで実現されています。115行目あたりに「
function SearchHighlight」がありますが、その中にwords = "<?php echo htmlspecialchars($pageReferer->cQueryString)?>".split(/\s+/);という行があります。ここで検索語句をJavaScriptに登録して、ハイライトを実現しているようなので、全角スペースを半角スペースに置換するようにstr_replaceを追加しました。
words = "<?php echo str_replace(" ", " ", htmlspecialchars($pageReferer->cQueryString))?>".split(/\s+/);これで、検索語句はそのままに、ハイライト表示の時だけ全角スペースを半角スペースに置換して、全ての単語をハイライトしてくれます。
しかし日本語の環境ってほんとにややこしいですね。相当猛烈便利なプラグインを作っている皆さまに心より感謝いたします。
-
-
Tag(s): NP_SearchedPhrase
- [Nucleus] Next & Previous

