なんかこのサイトで妙にアクセスが集中してるエントリがあるんです。
で、なんでアクセスが集中するのか、というのと面白そうなので検索フレーズを調査です。
install & fix
まずは作者様のサイトから最新版のアーカイブをダウンロードします。
で、アーカイブをダウンロードしたら262から290行目を修正します。
function rankList($this, $item, $cat, $rows, $disp_length) { if (is_numeric($item) && $item) { $res = mysql_query('SELECT query_phrase, query_count FROM ' . sql_table('plugin_searched_phrase_count') . " WHERE item_id=$item AND cat_id=0 ORDER BY query_count DESC LIMIT 0, $rows"); } else { // We're in an index page if (is_numeric($cat) && $cat) { // in a category index. displays queries in the category $res = mysql_query('SELECT query_phrase, query_count FROM ' . sql_table('plugin_searched_phrase_count') . " WHERE item_id=0 AND cat_id=$cat ORDER BY query_count DESC LIMIT 0, $rows"); } else { // in the main index. displays all queries $res = mysql_query('SELECT query_phrase, query_count FROM ' . sql_table('plugin_searched_phrase_total') . " ORDER BY query_count DESC LIMIT 0, $rows"); } } if (mysql_num_rows($res)) { $site_search_url = $this->getOption('SearchURL'); $domains = $this->getOption('SiteSearchDomains'); $sitesearch = $this->getOption('SiteSearchSitesearch'); $client = $this->getOption('SiteSearchClient'); $forid = $this->getOption('SiteSearchForid'); $ie = $this->getOption('SiteSearchIe'); $oe = $this->getOption('SiteSearchOe'); $hl = $this->getOption('SiteSearchHl'); $cof = $this->getOption('SiteSearchCof'); $site_search_options = ($domains ? "&domains=" . urlencode($domains) : "") . ($sitesearch ? "&sitesearch=" . urlencode($sitesearch) : "") . ($client ? "&client=$client" : "") . ($forid ? "&forid=$forid" : "") . ($ie ? "&ie=$ie" : "") . ($oe ? "&oe=$oe" : "") . ($hl ? "&hl=$hl" : "") . ($cof ? "&cof=" . urlencode($cof) : ""); echo "<ol>\n"; while($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $query = $disp_length?shorten($row["query_phrase"], $disp_length, "..."):$row["query_phrase"]; echo '<li><a href="' . $site_search_url . "?q=" . urlencode($row["query_phrase"]) . $site_search_options . '">' . htmlspecialchars($query) . "</a> (" . number_format($row["query_count"]) . ")</li>\n"; // echo '<li><a href="http://search.yahoo.co.jp/search?p=' . urlencode($row["query_phrase"] . " site:www.higuchi.com") . '">' . htmlspecialchars($query) . "</a> (" . number_format($row["query_count"]) . ")</li>\n"; } echo "</ol>\n"; } }
から
function rankList($searchedPhrase, $item, $cat, $rows, $disp_length) { if (is_numeric($item) && $item) { $res = mysql_query('SELECT query_phrase, query_count FROM ' . sql_table('plugin_searched_phrase_count') . " WHERE item_id=$item AND cat_id=0 ORDER BY query_count DESC LIMIT 0, $rows"); } else { // We're in an index page if (is_numeric($cat) && $cat) { // in a category index. displays queries in the category $res = mysql_query('SELECT query_phrase, query_count FROM ' . sql_table('plugin_searched_phrase_count') . " WHERE item_id=0 AND cat_id=$cat ORDER BY query_count DESC LIMIT 0, $rows"); } else { // in the main index. displays all queries $res = mysql_query('SELECT query_phrase, query_count FROM ' . sql_table('plugin_searched_phrase_total') . " ORDER BY query_count DESC LIMIT 0, $rows"); } } if (mysql_num_rows($res)) { $site_search_url = $searchedPhrase->getOption('SearchURL'); $domains = $searchedPhrase->getOption('SiteSearchDomains'); $sitesearch = $searchedPhrase->getOption('SiteSearchSitesearch'); $client = $searchedPhrase->getOption('SiteSearchClient'); $forid = $searchedPhrase->getOption('SiteSearchForid'); $ie = $searchedPhrase->getOption('SiteSearchIe'); $oe = $searchedPhrase->getOption('SiteSearchOe'); $hl = $searchedPhrase->getOption('SiteSearchHl'); $cof = $searchedPhrase->getOption('SiteSearchCof'); $site_search_options = ($domains ? "&domains=" . urlencode($domains) : "") . ($sitesearch ? "&sitesearch=" . urlencode($sitesearch) : "") . ($client ? "&client=$client" : "") . ($forid ? "&forid=$forid" : "") . ($ie ? "&ie=$ie" : "") . ($oe ? "&oe=$oe" : "") . ($hl ? "&hl=$hl" : "") . ($cof ? "&cof=" . urlencode($cof) : ""); echo "<ol>\n"; while($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $query = $disp_length?shorten($row["query_phrase"], $disp_length, "..."):$row["query_phrase"]; echo '<li><a href="' . $site_search_url . "?q=" . urlencode($row["query_phrase"]) . $site_search_options . '">' . htmlspecialchars($query) . "</a> (" . number_format($row["query_count"]) . ")</li>\n"; // echo '<li><a href="http://search.yahoo.co.jp/search?p=' . urlencode($row["query_phrase"] . " site:www.higuchi.com") . '">' . htmlspecialchars($query) . "</a> (" . number_format($row["query_count"]) . ")</li>\n"; } echo "</ol>\n"; } }
です。元々のソースは$thisっていう引数をとって使ってるんですが、これは予約語なので適当に置き換えてるだけです。
後はを/nucleus/plugin/ディレクトリに置いて、管理画面のプラグイン管理からインストールすれば完了です。
使い方
作者様のサイトを参照するのが一番だと思うんですが、まずは検索ワードをHighlightさせる為のJavaScriptを読み込みます。
headタグの中にこんな感じに追記です。
<%SearchedPhrase(highlight)%>
このサイトでは左のナビゲーションのところに使っています。
<%if(skintype,index)%> <div class="menu_box_top"></div> <div class="menu_box_body"> <p>Search Words</p> <%SearchedPhrase(rank, all, 10)%> </div> <div class="menu_box_bottom"></div> <%endif%> <%if(skintype,item)%> <div class="menu_box_top"></div> <div class="menu_box_body"> <p>Search Words</p> <%SearchedPhrase(rank, , 5)%> </div> <div class="menu_box_bottom"></div> <%endif%>
スキンタイプで出力する内容を変えてるわけです。
index(メインの目次スキン)の時は、サイト全体の検索フレーズの一覧を10出力。
item(個別アイテムスキン)の時は、アイテムに該当する検索フレーズの一覧を5出力。
以上。