Вставка терминов поиска в поисковый ввод в Drupal 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-адрес когда-либо изменится.

7 голосов | спросил Daniel Nitsche 7 J0000006Europe/Moscow 2011, 11:20:29

2 ответа


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;
}

edit: нет здесь check_plain

ответил Matthijs Bierman 14 J000000Thursday11 2011, 17:06:31
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']);

}

Есть ли лучший способ сделать это?

ответил Daniel Nitsche 8 J0000006Europe/Moscow 2011, 05:27:21

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132