Стандартный поиск в Drupal довольно ограничен и имеет минимум настроек. Модуль Custom Search способен немного расширить арсенал настроек для стандартного поиска , но некоторые вещи не под силу даже ему, к примеру изменить количество результатов поиска на страницу, добавить дополнительные поля для вывода на странице результатов поиска и т.д..
Если вы на ты с кодом можно конечно отредактировать сам модуль поиска который находиться по следующему пути – ваш_сайт/modules/search/ там в файле search.pages.inc можно добавлять переменные, а в файле search-result.tpl.php править их вывод предварительно скопировав его в папку вашей темы.
Но на мой взгляд существует более изящный выход из данной ситуации — оставить модулю Search функцию индексирования, а поиск по индексу и вывод результатов возложить на модуль Views:
Создаём представление:
- Имя представления: Search page
- Машинное имя: search_page
- Показать: Содержание типа Все отсортировано по несортированный
- Заголовок страницы: Search page
- Путь: search-page
После сохранения получаем следущий результат
Добавляем новый фильтр в “Критерии фильтрации” найдите фильтр “Поиск: Термины поиска” и нажмите на кнопку “Применить (все отображения)”.
На странице конфигурации фильтра, поставьте флажок напротив “Раскрыть этот фильтр для посетителей и позволить его изменять.” и нажмите на кнопку “Применить (все отображения)”.
Все, что мы на самом деле сделали добавлен “Поиск: Термины поиска” фильтр и экспонировали его так, чтобы пользователи могли войти в ключевые слова для поиска. В текстовом поле появится над просмотров страницы.
На данный момент, у нас есть страница , рабочий просмотры. Сохранить вид, и перейти к / с поиском страницы
.
Если ввести в некоторых ключевых слов в “Поисковые запросы” текстовое поле, страница должна возвращать некоторые результаты.
Фильтр отображения в блоке
По умолчанию, количество просмотров помещает “Поисковые запросы” текстовое поле (подвергается фильтр) над областью содержимого страницы. Просмотров предлагает вам возможность выставить фильтр в виде блока. Это полезно, если вы хотите переместить обнаженную фильтр где-то еще, а не только над областью контента.
1. Перейдите на страницу редактирования для “Страница поиска” вид.
2. В разделе Дополнительно нажмите на ссылку Нет рядом с “разоблачил формы в блоке” этикетке.
3. Выберите Да, изнутри во всплывающем окне и нажмите на кнопку Применить.
4. После того, как вы настроили просмотра Нажмите на Сохранить.
Назначение блока к региону
Вы можете заметить, что фильтр не отображается над областью контента, это потому, что теперь подвергается как блок. Последний бит работы нам нужно сделать, это добавить в открытый блок фильтра в область, в рамках темы.
1. Перейдите в раздел Структура -> блоки и присвоить “разоблачил форму: search_page-страницы” блокировать конкретный регион.
2. Теперь, если вы идете на страницу поиска, фильтр должен быть в назначенном блоке.
Последний бит требуемой работы является стиль результатов поиска. Но, как вы видели, это довольно легко создать страницу пользовательского поиска, используя только просмотров и модуль поиска.
Результат:
Статья на английском: http://www.webwash.net/drupal/tutorials/how-create-search-pages-using-views-drupal-7