Настройка умного поиска для UberShop — адаптивный интернет-магазин
Установка модуля
Для начала необходимо установить и настроить его по стандартной схеме, описанной тут.
Копируем шаблоны поисковых компонент
1. Копируем шаблоны компонент поиска search.title
Для этого надо скопировать папку
/bitrix/templates/#ШАБЛОНА_САЙТА#/components/bitrix/search.title
в
/bitrix/templates/.default/components/itd/search.title
2. Копируем шаблоны компонент поиска search.page
Для этого надо скопировать папку
/bitrix/templates/#ШАБЛОНА_САЙТА#/components/bitrix/search.page
в
/bitrix/templates/.default/components/itd/search.page
Прописываем использование новых компонент
Список файлов, где необходимо заменить bitrix:search.title на itd:search.title:
- /bitrix/templates/#ШАБЛОНА_САЙТА#/blocks/headers/header_includes/header_search.php
- /bitrix/templates/#ШАБЛОНА_САЙТА#/blocks/mobile_headers/mobile_header_v1.php
Список файлов, где необходимо заменить bitrix:search.page на itd:search.page:
- /bitrix/templates/#ШАБЛОНА_САЙТА#/components/bitrix/catalog.search/main/template.php
Если вы хотите, что бы результаты поиска сортировались по релевантности, то необходимо в файле /bitrix/templates/#ШАБЛОНА_САЙТА#/components/bitrix/catalog.search/main/template.php
Найти строчки
"ELEMENT_SORT_FIELD" => $arParams["ELEMENT_SORT_FIELD"], "ELEMENT_SORT_ORDER" => $arParams["ELEMENT_SORT_ORDER"], "ELEMENT_SORT_FIELD2" => $arParams["ELEMENT_SORT_FIELD2"], "ELEMENT_SORT_ORDER2" => $arParams["ELEMENT_SORT_ORDER2"],И заменить их на
"ELEMENT_SORT_FIELD" => "ID", "ELEMENT_SORT_ORDER" => $arElements,
Если вы хотите, что бы в результатах поиска выводились товары, для которых нашлись торговые предложения, например при поиске по артикулу торгового предложения, внесите следующие правки в файл /bitrix/templates/#ШАБЛОНА_САЙТА#/components/bitrix/catalog.search/main/template.php
1. В подключении компонента itd:search.page добавьте условие для поиска по инфоблоку торговых предложений
"arrFILTER" => array("iblock_ubershop_catalog","iblock_ubershop_offers"),
2. После подключения компонента itd:search.page вставить код
// Если нашлись торговые предложения, то выведем основные товары, подставив их на место торговых предложений
if (is_array($arElements) && !empty($arElements) && \Bitrix\Main\Loader::includeModule('iblock')) {
$rsList = CIBlockElement::GetList([], ["IBLOCK_TYPE" => "ubershop_offers", "ID" => $arElements], false, false, ['ID', 'PROPERTY_CML2_LINK.ID']);
if ($rsList->SelectedRowsCount() > 0) {
$replaceIds = [];
while ($arItem = $rsList->Fetch()) {
$replaceIds[(int)$arItem['ID']] = (int)$arItem['PROPERTY_CML2_LINK_ID'];
}
if (!empty($replaceIds)) {
foreach ($arElements as $k => $offerId) {
if (!isset($replaceIds[(int)$offerId])) {
continue;
}
$arElements[$k] = $replaceIds[(int)$offerId];
}
$arElements = array_unique($arElements);
}
}
}
Всё, теперь при использовании поиска на сайте будет использоваться улучшенный поиск.
Нужна помощь?
Если у вас возникли проблемы при настройке или вы нашли ошибку в документации, напишите нам.