Как я могу получить значение формы поиска в 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', '=');
}