Поиск похожих товаров

Поиск похожих товаров

1287
28.02.2016

Ранее писал уже статью про поиск похожих статей, но тот код был слишком примитивым. В этом посте - ремейк строго алгоритма.

Очень часто в карточке товара нужно вывести другие товары, которые похожи на выбранный товар. Понятие "похожи" очень размытое. Похожесть может быть разной и основываться на совершенно разных факторах... Похожими могут быть товары, у которых, к примеру, одинаковое значение какого-то свойства, или товары из того же раздела. В этом посте рассмотрю более сложный вариант - товары, для которых совпадают слова в названии или в поисковых тегах.

Итак, для начала разберем слова из названия и поисковых тегов текущего товара. Для этого, в файле component_epilog.php разбираем слова:

$words1 = preg_split('#[0-9\W_]+#u', htmlspecialchars_decode($arResult['NAME']));
$words2 = preg_split('#[0-9\W_]+#u', htmlspecialchars_decode($arResult['TAGS']));

$words = array('LOGIC' => 'OR');
foreach (array_merge($words1, $words2) as $word) {
    $word = htmlspecialchars_decode($word);
    $word = trim($word);
    if (strlen($word) > 2) {
        $words[] = array('NAME' => '%' . $word . '%');
        $words[] = array('TAGS' => '%' . $word . '%');
    }
}

Таким образом, в массиве $words хранится набор слов (длинной более 2 символов), подготовленных для поиска по названиям товаров или по поисковым тегам товаров.

Помещаем данный подготовленный массив в глобальный массив фильтра:

$GLOBALS['SIMILAR_PRODUCTS'] = array($words);

Этот массив прописываем в параметр FILTER_NAME компонента catalog.section:

$APPLICATION->IncludeComponent(
    "bitrix:catalog.section",
    "template_name",
    array(
        ...
        "FILTER_NAME" => 'SIMILAR_PRODUCTS',
        ...
    ),
    false
);

Дополнительно в этот фильтр можно передать любые другие параметры для уточнения параметров поиска.



Благодарю за внимание! Делитесь вашими замечаниями в комментариях ниже.


P.S. Обращайтесь ко мне за приобретением лицензий и продлений на 1C-Битрикс "Управление сайтом", лицензий на облачную и коробочную версии Битрикс 24 а также за приобретением и внедрением готовых решений на базе 1С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом


Комментарии

Еще никто не комментировал данную публикацию. Будьте первыми!

Добавить комментарий

captcha

Возврат к списку