質問箱/4162

カテゴリ
サマリ検索と表示をひとつのフォームで行いたい
バージョン1.4.7
投稿者かつた?
状態完了
投稿日2007-09-23 (日) 20:28:55

質問

個人的な用語集としてPukiwikiを使わせてもらっています。

単語検索で、キーワードを入れると該当するページ一覧が表示されますが、 Mediawikiのように、キーワードとページ名が一致した場合にダイレクトでページが表示される、といったことは可能でしょうか?

プラグインで紹介されている検索など色々試したのですが、該当するものが見当たりませんでした。 Lookup(参照,参照)を使えば、確かにページ表示は可能ですが、これでは検索にはなりませんし..どうしたものかと。

単語検索と参照がひとつのフォームで出来ればと思ったのですが..

良い方法をご存知の方、ご教授下さい

回答

  • 本体の改造をよしとするのなら、lib/func.php (1.73) のdo_search 関数で、
    		// Search for page name
    		if (! $non_format) {
    			foreach ($keys as $key) {
    				$b_match = preg_match($key, $page);
    				if ($b_type xor $b_match) break; // OR
    			}
    			if ($b_match) continue;
    		}
    この部分を細工する。複数キーワードを入れた時にどうするのか*1で改造方法が変わるので、ひとまずはヒントだけで。 -- 2007-09-23 (日) 23:54:39
  • 早速のお返事ありがとうございます。うーん、本体改造ですか..敷居が高そうですね。自分としては複数キーワード時は通常のリスト表示(残りのキーワードサーチ続行)で考えています -- かつた? 2007-09-24 (月) 14:27:02
  • ANDとかORの条件にかかわらず、キーワードがページ名に一致したら、そのページを開く方法。$script周りは今回の件には関係ないのですが、自分の好みなので修正^^; -- ぃぉぃぉ 2007-09-24 (月) 14:45:55
    • lib/func.phpの改造
      function do_search($word, $type = 'AND', $non_format = FALSE, $base = '')
      {
      -	global $script, $whatsnew, $non_list, $search_non_list;
      +	global $whatsnew, $non_list, $search_non_list;
      	global $_msg_andresult, $_msg_orresult, $_msg_notfoundresult;
      	global $search_auth, $show_passage;
      +	$script = get_script_uri();
      
      +	if(is_page($word)) {
      +		 pkwk_headers_sent();
      +		 header('Location: ' . $script . '?' . rawurlencode($word));
      +		 exit;
      +	}
  • おおっ!正に求めていた動作です。ありがとうございました。助かります。 -- かつた? 2007-09-24 (月) 16:46:14


*1 ヒットした後、残りのキーワードを調べずに、そのページを表示するのかどうか

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-09-24 (月) 16:45:59
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.198 sec.

OSDN