2005-11-12 Sat

NP_SearchedPhrase|検索サイト経由で見られていない場合の表示

先日の「キーワード自動挿入のカスタマイズ」に続きまして「NP_SearchedPhrase」の改造メモです。

当サイトでは検索キーワードランキングを表示してますが、トップページは全ての検索キーワード、個別アイテムページではそのページにたどり着いた検索キーワードを表示しています。が、まだ一度も検索サイト経由で見られていないページの場合、なんにも表示されないのでちょっと寂しい。ということで、何らかのメッセージを表示するようにしてみました。以下そのメモ。

「function rankList」の処理をじーっと眺めていますと、最後の方に実際に検索キーワードとそのリンクを出力する個所があります。僕はそこもちょこちょこいじってます。デフォルトの状態だと、リスト表示されるのですが単純に p タグのみにしてます。こんな感じ。

修正前

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 '<p><a href="' . $site_search_url . "?q=" . urlencode($row["query_phrase"]) . $site_search_options . '">' . htmlspecialchars($query) . "</a> (" . number_format($row["query_count"]) . ")</p>\n";

また話がそれていってますが、つまり「ここになんか書いたら出力されるわけだ」と理解したのは、これがきっかけだったんですね。試しにこの直下に「echo 'hogehoge';」なんて書いちゃったら、キーワードの下に毎回「hogehoge」と出力されるでしょう。で、なんで検索サイト経由から見られていないページの場合、何も出力されないのか考えてみました。

もし、検索サイト経由の閲覧がないなら…という表記はもちろんありませんが、if 文がいくつかありますね。で、最初に書いた実際の出力コードは

if (mysql_num_rows($res))

という if 文内にあります。意味は分かりませんが、この if 文を満たさない場合には何にも出力しないわけなので、勝手に「else」を加えてこんな感じにしました。

function rankList($this, $item, $cat, $rows, $disp_length) {
 if (is_numeric($item)) {
  省略
 }
 if (mysql_num_rows($res)) {
  省略
  echo '<p><a href="' . $site_search_url . "?q=" . urlencode($row["query_phrase"]) . $site_search_options . '">' . htmlspecialchars($query) . "</a> (" . number_format($row["query_count"]) . ")</p>\n";
 } else {
  echo "<p>Not Searched Yet...</p>";
 }
}

つまり、if 文を満たしてないならなんにも出力しなかったところを、満たしていない場合の処理を書いただけですね。最近勘が冴え渡っております(笑)。

ま、全てのページが検索サイトの上位にインデックスされて、役立つ記事を書いていれば、こんな改造しないでいいんですけどね…

Keyword:

2005-11-12 Sat / Author - pushman / Nucleus / Comment - 0 / TrackBack - 0

「NP_SearchedPhrase|検索サイト経由で見られていない場合の表示」へのトラックバック

TrackBack URL:

「NP_SearchedPhrase|検索サイト経由で見られていない場合の表示」へのコメント





このページの先頭に戻る