Drupal 7の検索入力に検索語を挿入する


7

Drupal 7を使用している場合、現在の検索語をブロック内の検索フォームに印刷するにはどうすればよいですか?

Drupal 6では、template.phpで次のようなものを使用しました。

$vars['search_keys'] = search_get_keys();

次に、search-theme-form.tpl.phpで次のようにしました。

<input type="text" value="<?php print $search_keys; ?> name="search_theme_form" id="edit-search-theme-form-1">

しかしsearch_get_keysはDrupal 7には存在しないため、このメソッドは使用できません。

arg(2)を使用することは私が思いついた唯一の方法ですが、URLが変更されると壊れるので、少しハックに思えます。

回答:


6

あなたが使用している場合はApache Solrのを(http://drupal.org/project/apachesolr)を使用でき

$query->getParam("q")

search-result.tpl.phpテンプレート内。

それ以外の場合は、上記の関数を少し変更したバージョンを使用できます。

function get_current_search_terms() {
// only do this once per request
static $return;
    if (!isset($return)) {
        // extract keys from path
        $path = explode('/', $_GET['q'], 3);
        // only if the path is search (if you have a different search url, please modify)
        if(count($path) == 3 && $path[0]=="search") {
            $return = $path[2];
        } else {
            $keys = empty($_REQUEST['keys']) ? '' : $_REQUEST['keys'];
            $return = $keys;
        }
    }
    return $return;
}

編集:ここでcheck_plainの必要はありません


3

これが私が思いついたものです:

function mytemplate_preprocess_search_block_form(&$vars) {

  $path_args = arg();

  // Insert the current search term (if applicable).
  $value = (count($path_args) == 3 && (strpos($path_args[0], 'search') !== false)) ? filter_xss($path_args[2]) : '';

  $vars['search_form'] = str_replace('value=""', 'value="' . $value . '"', $vars['search_form']);

}

これを行うより良い方法はありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.