Einfügen von Suchbegriffen in eine Sucheingabe in Drupal 7

7

Wie drucke ich bei Verwendung von Drupal 7 die aktuellen Suchbegriffe in ein Suchformular in einem Block?

In Drupal 6 habe ich so etwas in meiner template.php verwendet:

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

Dann hatte ich in 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 ist in Drupal 7 jedoch nicht vorhanden, sodass ich diese Methode nicht verwenden kann.

Die Verwendung von arg (2) ist die einzige Methode, die ich mir ausgedacht habe, aber das scheint ein wenig hackig zu sein, da es kaputt geht, wenn sich die URL jemals ändert.

Daniel Nitsche
quelle

Antworten:

6

Wenn Sie Apache Solr (http://drupal.org/project/apachesolr) verwenden, können Sie verwenden

$query->getParam("q")

in Ihrer Vorlage search-result.tpl.php.

Andernfalls können Sie die leicht modifizierte Version der obigen Funktion verwenden:

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 hier nicht nötig

Matthijs Bierman
quelle
3

Folgendes habe ich mir ausgedacht:

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

}

Gibt es einen besseren Weg, dies zu tun?

Daniel Nitsche
quelle