Где реализовать hook_search_info & _execute, чтобы наложить фильтр языка на результаты поиска? - PullRequest
2 голосов
/ 13 декабря 2011

В данный момент я пытаюсь принудительно указать «текущий язык» в списке параметров, переданных в node_search_execute.К сожалению, у меня проблемы с поиском подходящего места для размещения функциональных хуков.Возможно, мне не хватает чего-то простого.

У меня есть две основные возможности для реализации этого:

(1) Реализация hook_search_info и hook_search_execute

В этом случае я бы скопировал код из node_search_execute и добавил в него строку, которая добавляет «И Язык = '$ current_language'" к поисковому запросу.

В папке моей темы I 'мы пытались добавить функции mythemename_search_info и mythemename_search_execute - но они не выполняются.При запуске.

 function mythemename_search_info() {
    return array(
        'title' => 'Content', 
        'path' => 'node', 
        'conditions_callback' => 'mythemename_search_execute',
    );
 }

 function mythemename_search_execute($keys = NULL, $conditions = NULL){
    return array();
 }

В этом примере - я просто надеюсь получить «никаких результатов», чтобы быть уверенным, что переопределение было запущено, тогда я реализовал бы полную функциональность поиска.

(2) Реализация hook_search_preprocess()

Я также пытался mythemename_search_preprocess()

 function mythemename_search_preprocess($text) {
   // Do processing on $text
    echo $text; die();
    $text = "french";
   return $text;
 }

Но, опять же, я не получаю ожидаемых результатов (aбелая страница с небольшим количеством текста)

Итак, что бы я ни делал, эти поисковые хуки не обнаруживаются.

Чего не хватает?Возможно, они должны быть в модуле?

Ответы [ 2 ]

3 голосов
/ 13 декабря 2011

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

Если вы еще не сделали этого, создать собственный модуль довольно просто, здесь есть бесценное руководство .

1 голос
/ 14 августа 2012

Я использовал hook_search_info(), hook_search_execute() и hook_search_access() в своем пользовательском модуле. заменил «крючок» на имя модуля. Мне удалось создать вкладку с заголовком hook_search_info(). и передал он приводит массив в hook_search_execute. с этим результаты начали показываться под вкладкой на странице поиска. Поэтому, безусловно, создание нового модуля поможет включить новую вкладку поиска.

...