Chèn cụm từ tìm kiếm vào đầu vào tìm kiếm trong Drupal 7


7

Khi sử dụng Drupal 7, làm cách nào để in các cụm từ tìm kiếm hiện tại thành một dạng tìm kiếm trong một khối?

Trong Drupal 6, tôi đã sử dụng một cái gì đó như thế này trong template.php của mình:

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

Sau đó, trong search-theme-form.tpl.php tôi đã có:

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

Nhưng search_get_keys không tồn tại trong Drupal 7, vì vậy tôi không thể sử dụng phương pháp này.

Sử dụng arg (2) là phương pháp duy nhất tôi nghĩ ra, nhưng có vẻ hơi hack, vì nó sẽ bị hỏng nếu URL thay đổi.

Câu trả lời:


6

Nếu bạn đang sử dụng Apache Solr (http://drupal.org/project/apachesolr), bạn có thể sử dụng

$query->getParam("q")

trong mẫu search-result.tpl.php của bạn.

Mặt khác, bạn có thể sử dụng phiên bản sửa đổi một chút của chức năng trên:

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

chỉnh sửa: không cần check_plain tại đây


3

Đây là những gì tôi nghĩ ra:

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']);

}

Có cách nào tốt hơn để làm điều này?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.