検索エンジンでブログを訪れた場合、ブログ上でその検索キーワードをハイライト表示します。
言わば Google のキャッシュでウェブページを表示した時のように、キーワードがハイライトされます。
検索エンジン経由でブログを訪れた際、検索に使用されたキーワードがブログ上でハイライト表示されます。
例: 「BlognPlus」が黄色くハイライトされている(左図参照)
モジュールを導入する前に、どんな風に動作しているかご覧になりたい場合は、以下のサイトを参考にして下さい。
試しに Google で「BlognPlus」と検索し、検索にヒットした「BlognPlus を使おう!」へのリンクをクリックしてみてください。
モジュールでリファラー(Referer)を解析し、キーワードを抽出します。
閲覧者の設定でリファラーを遮断している場合、この機能は動きません。
Javascript を使ってページ内に存在するキーワードを検索します。
マッチしたキーワードは <span class="searchword"></span> で括られます。
ハイライトのされ方はスタイルシートで指定できます(上記の例では黄色背景に黒文字)。
お使いのサーバーでマルチバイト文字列関数(mbstring)が有効である必要があります。
「検索語ハイライトモジュール」(sphrase.zip, 12kb)
赤文字のファイルのパーミッションは「666」「606」等にする必要があります。
「sphrase」フォルダを /module/ ディレクトリ下にアップロード後、未登録一覧に入っている「検索語ハイライトモジュール」の [インストール] ボタンを押してください。
特に制限はありません。
<head>〜</head> 内に以下の記述を追加する。
他の Javascript がある場合は、既存の <script>〜</script> 内に {SPHRASE} を追記するだけでOK です。
CSS ファイルに以下のようなスタイルを定義する(例:黄色背景に黒文字)
「検索語ハイライトモジュール」にはメジャーな検索エンジンを網羅した定義ファイル「sengine.csv」を同梱しています。
このファイルを元にリファラーの解析を行います。
定義ファイルに掲載されていない検索エンジン経由でブログを訪れた場合、ハイライト機能は機能しません。
www.google.com/search,q,UTF-8,ie,SJIS www.google.co.jp/search,q,UTF-8,ie,SJIS search.yahoo.co.jp/search,p,UTF-8,ei blog-search.yahoo.co.jp/search,p,UTF-8,ei search.msn.co.jp/results.aspx,q,UTF-8 search.live.com/results.aspx,q,UTF-8 search.goo.ne.jp/web.jsp,MT,EUC-JP blog.search.goo.ne.jp/search_goo/result/,MT,EUC-JP ocn.blog.goo.ne.jp/search/blogzine_search.php,MT,EUC-JP,code green.search.goo.ne.jp/search,MT,UTF-8,IE ocnsearch.goo.ne.jp/ocn.jsp,MT,Shift_JIS,IE search.www.infoseek.co.jp/Web,qt,UTF-8 search.www.infoseek.co.jp/Blog,qt,UTF-8 search.nifty.com/websearch/search,q,UTF-8 search.nifty.com/blogsearch/search,q,EUC-JP azby.search.nifty.com/websearch/search,q,UTF-8 cgi.search.biglobe.ne.jp/cgi-bin/search2-b,q,Shift_JIS cgi.search.biglobe.ne.jp/cgi-bin/search_bl_top,q,EUC-JP cgi.search.biglobe.ne.jp/cgi-bin/c_search,q,EUC-JP ask.jp/web.asp,q,UTF-8 ask.jp/blog.asp,q,UTF-8 www.marsflag.com/search.x,phrase,UTF-8 sagool.jp/s,q,UTF-8 www.mooter.co.jp/moot/,keywords,UTF-8 search.livedoor.com/search/,q,EUC-JP sf.livedoor.com/search/,q,UTF-8,ie www.excite.co.jp/search.gw,search,SJIS odn.excite.co.jp/search.gw,search,Shift_JIS search.fresheye.com/,kw,EUC-JP,cs news.fresheye.com/search/,kw,EUC-JP,cs b.hatena.ne.jp/search,q,UTF-8 s.luna.tv/search.aspx,q,UTF-8 search.auone.jp/,q,Shift_JIS,ie
検索エンジンのリクエスト URL は予告なく変更される事がよくあります。
いつの間にかハイライト機能が動作しなくなっている場合は、定義データが正しいか確認してください。
定義ファイル「sengine.csv」は1行に1つの検索エンジンデータを格納している CSV 形式のファイルです。
データのフォーマットは以下の通り
HOST+PATH,Query,デフォルト文字コード,エンコーディング引数
最初の「HOST+PATH」「Query」「デフォルト文字コード」は必須ですが、最後の「エンコーディング引数」はなくても動作します。
「文字」と検索した場合、URL 内では使われている文字コード(UTF-8/EUC-JP/Shift_JIS)によって以下のような文字列が返ってきます。
例えば Google.com で「文字」と検索すると、下記のような リクエスト URL が返ってきます。
検索方法によっては、もっと他のパラメータがリクエスト URL に付いてくる事もあります。
このリクエスト URL を元にした定義データは
デフォルトの文字コードは UTF-8 ですが、時々別の文字コードが使われる事もあります。
その場合、リクエスト URL に「ie=SJIS」のようなパラメータが付いてきます。
Google の場合、この「ie」がエンコーディング引数になります。
これらの情報を踏まえ、Google.com 用の定義データは以下の通りになります。
www.google.com/search,q,UTF-8,ie
Google Japan 用の定義データもほぼ同じですが、「Hostname + Path」が「www.google.co.jp/search」になります。
www.google.co.jp/search,q,UTF-8,ie
Yahoo! Japan で「文字」と検索した際のリクエスト URL は
http://search.yahoo.co.jp/search?p=%E6%96%87%E5%AD%97&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=
Yahoo! Japan 用の定義データは以下の通りになります。
search.yahoo.co.jp/search,p,UTF-8,ei
「sengine.csv」以外のファイルを上書きアップロードしてください。
「sengine.csv」以外のファイルを上書きアップロードしてください。
「function.php」が不要になったので削除してください。