Как я могу получить значение формы поиска в Drupal 7

Я попытался реализовать новый модуль, который ловит ключи, записанные в форме поиска по умолчанию, и отображает результаты, отличные от страницы результатов поиска по умолчанию. С этими другими результатами я сделаю внешний запрос, который помещается в специальный блок.

Есть идеи, как это сделать?

Я попытался использовать пользовательский модуль, создающий "hook_alter_form", но безуспешно.

Другими словами:

У меня есть такая функция:

 function my_function_name_form_alter(&$form,&$form_state,$form_id){ 
     switch($form_id){ 
      case 'search-block-form':
     //Here i want to catch the text that i wrote in the search box 
     break; 
    } 
  }

Спасибо!

1 ответ

Вы можете изменить поисковый запрос, чтобы показать другие результаты:

function mymodule_query_alter(QueryAlterableInterface $query){
  $is_search = FALSE;
  foreach ($query->getTables() as $table) {
    if ($table['table'] == 'search_index') {
      $is_search = TRUE;
    }
  }

 if ($is_search) {
    global $language; 

    $db_or = db_or();
    $db_or->condition('n.type', 'event', '=');
    $db_or->condition('n.type', 'real_sitio', '=');
    $query->condition($db_or);

    $query->condition('n.language' , $language->language, '=');
 } 
}

Это немного снижает производительность, поэтому есть патч для drupal по адресу http://drupal.org/node/1435834 который добавляет хук для внесения изменений непосредственно в поисковый запрос:

Наконец, это будет выглядеть так:

function mymodule_search_query_search_node_alter(&$query) {
  $query->condition('n.type', 'article', '=');
}
Другие вопросы по тегам