クイックサーチ機能をより便利にするTIPS
掲示板で、名無しさんが素敵な改造を披露してくれているのですが、掲示板だと埋もれちゃってもったいないので勝手にサルベージ。一部改変してますが原則原文のママ。
クイックサーチをいざ使おうと思ったら、キーワードを忘れちゃってたというのはよくあるハナシで。ここのデモサイトでは、「?」記号のリンクをクリックして表示されるヘルプページにキーワードを書いてあったりしますが、新しいキーワードを追加する都度ヘルプページを書き直すのも意外とメンドーなわけで。
てなことで、ヘルプページを、クイックサーチの設定を読み込んで自動生成し、さらに同様の方法で、以前に紹介したクイックサーチを転用した検索フォームも自動生成してしまおうというものです。かなり便利なのでお勧め。名無しさんに感謝汁!
なお、以下の499レスので作る検索フォームの、送信先のスクリプト「s.php」は、こちらのページにあるものを使ってください。
497 :名無しさん:2006/08/22(火) 02:08:50
--- Help.inc.php (新規作成)---
<?php
define('HELP_TITLE', 'ヘルプ');
$content = '<p>URL入力欄には、URLの他に検索語を入力してGoogle検索などが行なえます。URLは「http://」は省略できます。</p>';
if (defined('QUICK_SEARCH')) {
$content .= '<p>■ 検索キーワード<br />';
foreach ($quick_search as $key => $value) {
$content .= "$key … ".(isset($value[2])? $value[2]: '説明なし').
((QUICK_SEARCH == $key)? '(デフォルト)<br />': '<br />');
}
$content .= '</p>';
}
$content .= <<<HTML
<p>検索語の前のキーワードは大小文字を区別しません。<br>
URL入力欄の上にもうひとつ(数字の入った)入力欄が表示されてる場合、新しいURLや検索語を入力するときは、あらかじめ上の欄の内容は消してください。</p>
<p>■ ショートカット<br />
1=始 2=上 3=×<br />
4=× 5=写 6=TOP<br />
7=× 8=下 9=次</p>
HTML;
return $content;
?>
498 :名無しさん:2006/08/22(火) 02:09:51
--- Config.inc.php ---
連想配列 $quick_search の値の配列に、3番目の要素として説明文を追加
(例)
/* google */ 'g' => array( 'http://www.google.co.jp/search?lr=lang_ja&q=', 'UTF-8', 'Google Japan' ),
--- pc2m.php ---
394行目に以下を挿入(追記:これはこのレス当時の最新暫定版だった0.9.20RC1の場合で、同RC2では406行目が、ひと世代前の0.9.18では352行目がこれに該当します)
} elseif ($local_args['a'] == 'qs') {
$content = require_once 'Help.inc.php';
$content = mb_convert_kana($content, $_kana_convopt);
$title = defined('HELP_TITLE')? HELP_TITLE: null;
--- Template.inc.php ---
適当なところに以下を追加
echo '<a href="'.$script_self.KEY_PREFIX.'a=qs">?</a>';
499 :名無しさん:2006/08/22(火) 02:25:37
連投失礼しましたー。バグがないことを祈ります。
ヘルプ画面の文面はデモサイトそのままにしてます。
インデントに全角スペースを使ってるのでコピペは注意。(追記:転載にあたって半角スペースに変更してるので、そのままコピペできる筈)
ついでに FrontPage.inc.php に以下を追加したら
>>490の作者さんのアドバイスも実現♪
$content .= "<form action=\"s.php\">
<input type=\"hidden\" name=\"script\" value=\"$script_self\">
<select name=\"key\">";
foreach ($quick_search as $key => $value) {
$content .= "<option value=\"$key\"".
(QUICK_SEARCH == $key? ' selected="selected"': null).
">$value[2]</option>";
}
$content .= '</select><br />
<input type="text" size="10" name="query"><input type="submit" value="検索">
</form>';
return $content;
あ、45行目の return を $content = にしないといけないです。
2006/09/08
トラックバック
このエントリーのトラックバックURL:
http://www.rcdtokyo.com/mt/mt-rcdtokyo5428-tb.cgi/778
コメント
/* ceek */
'c' => array(
'http://www.ceek.jp/search.cgi?q=',
'SJIS'
),
/* 株価 */
'f' => array(
'http://quote.yahoo.co.jp/quotes?SYMBOLS=',
'SJIS'
),
/* ヤフオク */
'au' => array(
'http://search.auctions.yahoo.co.jp/jp/search/auc?p=',
'SJIS'
),
/* yahoo */
'y' => array(
'http://search.yahoo.co.jp/search?p=',
'UTF-8'
),
/* msn */
'ms' => array(
'http://search.msn.co.jp/results.aspx?v=1&RS=CHECKED&CY=ja&FORM=MSNH&q=',
'UTF-8'
),
/* カカクコム */
'ka' => array(
'http://kakaku.com/ksearch/search.asp?Query=',
'UTF-8'
),
/* it用語*/
'it' => array(
'http://e-words.jp/?w=',
'SJIS'
),
/* wikipedia高速検索*/
'wik' => array(
'http://athlon64.fsij.org/~mikio/wikipedia/estseek.cgi?phrase=',
'UTF-8'
),
/* amazon*/
'am' => array(
'http://www.amazon.co.jp/s/ref=nb_ss_gw/250-3869388-2887450?__mk_ja_JP=%83J%83%5E%83J%83i&url=search-alias%3Daps&field-keywords=',
'SJIS'
),
/* ask*/
'ask' => array(
'http://ask.jp/web.asp?o=0&qsrc=4&q=',
'UTF-8'
),
/* marsflag*/
'mar' => array(
'http://www.marsflag.com/search.x?phrase=',
'UTF-8'
),
/* 2ch*/
'ch' => array(
'http://example.ddo.jp/aas/find.i/-/',
'EUC'
),
/* はてな*/
'ha' => array(
'http://search.hatena.ne.jp/search?ie=utf8&word=',
'UTF-8'
),
/* 国語辞書*/
'ko' => array(
'http://www.excite.co.jp/dictionary/japanese/?search=',
'UTF-8'
),
自分のConfig.inc.php晒してみます
Posted by maさん at 2006/09/09 02:18