Этот пакет предоставляет единый интерфейс для полнотекстового поиска с различными поисковыми системами и контроллер с шаблонами веток для отображения форм и результатов поиска.
Примечание. Вы рассматриваете версию 2 этого пакета, в которой произошли большие изменения по сравнению с версией 1.
Этот пакет поиска упрощает добавление поиска на ваш сайт.
Для вас предусмотрено:
На данный момент поиск по сайту Google поддерживается «из коробки». Существует одна реализация, использующая Google REST API, и одна реализация, использующая функцию пользовательского элемента поиска, которая загружает поиск только с использованием JavaScript во внешнем интерфейсе.
Пожертвования на другие услуги приветствуются.
Установите пакет с помощью composer require liip/search-bundle
.
Включите пакет в app/Kernel.php.
Добавьте предпочитаемую вами поисковую систему в app/config/config.yml:
liip_search :
clients :
google_rest :
api_key : ' %google.api_key% '
search_key : ' %google.search_key% '
Или, если вы используете систему пользовательского поиска Google на основе javascript:
liip_search :
clients :
google_cse :
cse_id : ' %google.search_key% '
Вы можете отобразить окно поиска в любом месте страницы с помощью функции ветки liip_search_box:
{{ liip_search_box(query, 'query-field-id', 'css-class') }}
Вы можете настроить окно поиска, указав следующие параметры:
<form>
.Создайте маршрут для действия поиска. Самый простой — просто использовать предоставленный файл маршрутизации.xml из файла router.xml вашего основного проекта:
liip_search:
resource: "@LiipSearchBundle/Resources/config/routing.xml"
По умолчанию используется URL-адрес /search
. Если вам нужен другой маршрут, используйте опцию prefix
при включении маршрута или настройте свой собственный маршрут, используя %liip_search.controller.search_action%
в качестве значения по умолчанию для _controller
.
Шаблоны результатов поиска, предоставляемые этим пакетом, расширяют шаблон LiipSearchBundle::layout.html.twig
. Для интеграции с остальной частью вашего сайта у вас есть два варианта:
app/Resources/LiipSearchBundle/views/layout.html.twig
и расширьте его базовый макет, поместив блок liip_search_content
туда, где вы хотите получить результаты поиска.app/Resources/LiipSearchBundle/views/Search/search.html.twig
и создайте свою собственную структуру шаблонов — вы сможете use
шаблон search_results.twig.html
чтобы получить блок liip_search_content
.Конечно, вы также можете переопределить любой из шаблонов, чтобы настроить то, что они должны делать. См. http://symfony.com/doc/master/book/templating.html#overriding-bundle-templates.
Это полный справочник того, что вы можете настроить с помощью ключа liip_search
:
search_factory
строка , значение по умолчанию: ноль
Укажите специальную службу, реализующую LiipSearchBundleSearchFactoryInterface
. Эта служба будет использоваться контроллером для создания экземпляров Pagerfanta
для обработки поиска.
Если вы настраиваете одну из служб поисковой системы, вам не нужно задавать это поле.
search_route
строка , значение по умолчанию: liip_search
Имя маршрута, который будет обрабатывать отправленные поисковые запросы.
restrict_language
логическое значение , значение по умолчанию: false
Измените это значение на true, если вы хотите попросить службу поиска ограничить результаты языком запроса.
Настройка любого из этих параметров включает службу поисковой системы Google. Они расположены в разделе clients.google_rest
.
api_key
строка , обязательна
Ваш ключ Google API
search_key
строка|массив , обязателен
Ключ, идентифицирующий вашу поисковую систему Google. Может быть списком ключей, проиндексированных по локали, для использования разных движков для каждой локали. Если вы управляете языковыми стандартами через отдельные поисковые системы, вам не нужно устанавливать для restrict_language
true, если только вы не хотите, чтобы ваши системы пользовательского поиска дополнительно получали языковое ограничение.
api_url
строка , значение по умолчанию: https://www.googleapis.com/customsearch/v1
URL-адрес Google Search API для вызовов REST
restrict_to_site
строка , значение по умолчанию: ноль
Если оставить пустым, поиск будет осуществляться на всех сайтах, настроенных для поисковых систем Google. Установите домен aa, чтобы ограничиться этим доменом.
Настройка этого раздела активирует другой контроллер, который отображает фрагмент Javascript для включения поиска CSE. Эта конфигурация находится в разделе clients.google_cse
.
cse_id
строка|массив , обязателен
Ключ, идентифицирующий вашу систему пользовательского поиска Google. Может быть списком ключей, проиндексированных по локали, для использования разных движков для каждой локали. CSE не поддерживает restrict_language
, поэтому разные поисковые системы для каждого языка — ваш единственный вариант ограничить язык результатов поиска.
Если вы получаете исключение SearchException
с надписью «От API поисковой системы Google получен пустой ответ», попробуйте скопировать выведенный URL-адрес в браузер. Вы должны получить ответ в формате JSON, но, скорее всего, он будет иметь статус ошибки.
Если вы получите статус 500 с пустым сообщением, скорее всего, вам необходимо обновить поисковую систему в панели администратора Google.
Реализуйте LiipSearchBundleSearchInterface
и настройте его как службу. Затем установите для liip_search.search_client
имя этого сервиса.