Модуль OpenSearch предоставляет результаты поиска в виде RSS, нет необходимости кодировать его самостоятельно.
Если вам нужна специализированная форма, вы можете просто перенаправить результат OpenSearch после обработки вашей формы.
Приложение: Если вы действительно хотите сделать свое дело, вы можете использовать search_data
следующим образом:
<?php
$data = search_data('your searchterms here');
Это ищет узлы (как второй параметр по умолчанию для search_data
), но может также использоваться для поиска пользователей и других вещей, которые реализовали hook_search.
Кроме того, search_data
, опровергая имя, фактически возвращает отформатированные результаты поиска. Если вы хотите получить необработанные результаты поиска, вы можете вызвать hook_search
напрямую или использовать do_search
. Примеры:
<?php
$results = module_invoke('node', 'search', 'your searchterms here');
$data = do_search($query, 'node');
Разница в том, что при вызове ловушки вы получаете гораздо больше данных, связанных с узлами (поскольку он проходит через код поиска, специфичный для узла, в дополнение к универсальной do_search
(реализация hook_search
для node.module вызывает do_search чтобы получить реальную работу)) и, возможно, более точный поиск, так как поиск узла учитывает веса, которые вы могли установить в настройках поиска. Компромисс - более медленный поисковый запрос.