it-swarm-eu.dev

Vložení vyhledávacích dotazů do vyhledávacího vstupu v Drupal 7

Jak mohu při použití Drupal 7) vytisknout aktuální vyhledávací dotazy do vyhledávacího formuláře v bloku?

V Drupal 6) jsem použil něco podobného v mém template.php:

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

Pak jsem v search-theme-form.tpl.php měl:

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

Ale search_get_keys v Drupal 7) neexistuje, takže tuto metodu nemohu použít.

Použití arg (2) je jediná metoda, se kterou jsem přišel, ale zdá se to trochu zaseknutý, protože pokud dojde ke změně adresy URL, zlomí se.

7
Daniel Nitsche

Pokud používáte Apache Solr (http://drupal.org/project/apachesolr), můžete použít

$query->getParam("q")

v šabloně search-result.tpl.php.

Jinak můžete použít mírně upravenou verzi výše uvedené funkce:

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: zde není potřeba check_plain

6
Matthijs Bierman

Tady je to, s čím jsem přišel:

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

}

Existuje lepší způsob, jak toho dosáhnout?

3
Daniel Nitsche