2009-07-01 8 views
0

Я заглянул в API поиска DP 6 и не увидел крючка, который позволил бы мне изменить ключи поиска до того, как они будут переданы в модуль поиска для выполнения поиска. Я хочу сделать расширение ключевого слова в строке, введенной пользователем. Например, если пользователь ввел «foo», я хочу выполнить поиск «foo» и «bar». В конечном итоге должен быть пользовательский интерфейс для этих сопоставлений, но для быстрого прототипа я могу жестко закодировать строки.Поведение поиска Drupal

Где бы вы начали вводить код, который делает это? Я пропустил крючок в API поиска?


UPDATE:
Модуль Synonyms делает это для терминов таксономии. Мне все же может понадобиться сделать это для полнотекстовых поисковых запросов. Какие-либо предложения?

ответ

2

Крючок для использования в этом случае - hook_search_preprocess. Он позволяет редактировать ключи, которые пользователь вводит перед выполнением поиска. Полезно, что это также делает это для индексирования текста, поэтому вы получаете преимущество расширений этих слов для индексируемого текста.

+0

Прохладный, спасибо. Не было бы полезно, если бы это было включено в ссылку поиска api? http://api.drupal.org/api/group/search/6 – cdonner

+0

Было бы очень полезно. Ссылка API поиска и состояние поиска в Drupal несколько горестны и, безусловно, будут областью, в которой будет оценен вклад. Например, есть даже поисковый крючок, который вообще не документирован. – codeincarnate

0

Я не пробовал это, но, прочитав документы, я думаю, что вы можете реализовать hook__search() в своем модуле, расширьте его, а затем сделайте do__search() с расширенными клавишами.

По внешнему виду вам также необходимо будет сделать hook__update__index().

+0

Это не совсем для меня. Я предполагаю, что Drupal вызывает do__search() для всех модулей самостоятельно, так что не буду ли я дважды искать? Я могу представить, что я могу вызвать do_search только для ключей, которые я хочу программно добавить. Поскольку будет OR'd, я могу объединить результирующие множества. Это было бы сложным решением для простой задачи. То, что мне нужно сделать, это «переопределить» метод do_search(), но я не знаю, как это сделать. – cdonner

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^