Перейти к основному содержимому

Реализация собственного поиска

Регистрация реализации

Pimcore предоставляет реестр searchImplementationRegistry (фасад), в котором вы можете зарегистрировать свою кастомную реализацию поиска.

Пример регистрации кастомной реализации

pimcore.registerNS('pimcore.bundle.search');  

pimcore.bundle.search = Class.create({
initialize: function () {
document.addEventListener(pimcore.events.pimcoreReady, this.pimcoreReady.bind(this));
},

pimcoreReady: function () {
this.searchRegistry = pimcore.globalmanager.get('searchImplementationRegistry');
this.searchRegistry.registerImplementation(new your.custom.search.implementation());
}
)};

Проверка наличия реализации

Благодаря реестру мы можем проверить, была ли зарегистрирована какая-либо кастомная реализация поиска.

pimcore.globalmanager.get('searchImplementationRegistry').hasImplementation();  

//Или более читаемый вариант
pimcore.helpers.hasSearchImplementation()

Создание кастомной реализации поиска

Если вы хотите создать собственную реализацию поиска, вам необходимо предоставить набор предопределенных методов. Эти методы: openItemSelector, showQuickSearch, hideQuickSearch и getObjectRelationInlineSearchRoute.

  • openItemSelector вызывается определенными полями объектов данных и редактируемыми областями (editables) через Helper.js.
  • showQuickSearch и hideQuickSearch отвечают за управление быстрым поиском.
  • getObjectRelationInlineSearchRoute должен возвращать маршрут к методу DataObjectController::optionsAction.

Для примера вы можете изучить реализацию в стандартном бандле Pimcoresimplebackendsearchbundle. См. Service.js и Selector.js.

Использование Pimcore без Simplebackendessearchbundle

Если вы используете Pimcore без установленного бандла SimpleBackendSearchBundle, необходимо учитывать следующие ограничения.

Кнопка поиска (SearchButton)

Pimcore скроет все кнопки поиска в полях объектов и редактируемых областях (например: отношения, изображения, галереи, видео и т.д.).

Встроенный поиск (Inline Search)

Pimcore предоставляет возможность добавить встроенный поиск (inline search) для некоторых типов отношений. Без бандла эта опция будет недоступна.

Поиск в панели инструментов (Toolbar Search)

В основной панели инструментов Pimcore не будет кнопки поиска. Соответственно, функционал быстрого поиска (quickSearch) также будет отсутствовать.

Поиск по GDPR

В Pimcore будет доступна только базовая (очень упрощенная) реализация поиска данных по регламенту GDPR. Для полноценного поиска, особенно по объектам данных (Data Objects), настоятельно рекомендуется использовать SimpleBackendSearchBundle.


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.