4  /  12

Перекрестные продажи / Аналогичные, рекомендуемые, похожие товары / Аксессуары

Внимание: В статье приведены примеры, описывающие принцип реализации. Для внедрения рекомендуется обратиться к разработчикам.

Очень часто на странице товара необходимо выводить список дополнительных предложений, на основании тех или иных параметров

Это всем известные блоки похожих, рекомендуемых, аналогичных товаров. Это могут быть также аксессуары, "обычно с этим товаром покупают". Синонимов можно подобрать множество, иными словами - перекрестные продажи.

Для упрощения реализацию подобных блоков и служит данный функционал этого модуля (Сервисы -> Инструменты, коллекции, групповые действия -> Коллекции).

Принцип работы следующий:

  1. Выбирается группа товаров (ГРУППА 1), с помощью специального конструктора. В ней доступно множество параметров для подбора товаров, например, свойства, название, символьный код, разделы, доступность.
  2. Для данной ГРУППЫ 1, определяется другая группа товаров (ГРУППА 2), которые необходимы выводить в нужных дополнительных блоках в детальной карточке товара, описанных выше.
Инструменты_коллекции_групповые действия - Перекрестные продажи
Стоит понимать, что данный функционал - это не панацея, а инструмент, как и с любым инструментом, с ним нужно уметь пользоваться.

При переиндексации, для товаров ГРУППЫ 1 в указанное вами свойство типа строка записывается сериализованный массив сформированного фильтра на базе ваших настроек для ГРУППЫ 2. Подобных выборок можно создавать сколько угодно и записывать в разные свойства, таким образом определяя в дальнейшем разные блоки дополнительных товаров.

В свойства запишется строка вида:

a:5:{s:6:"ACTIVE";s:1:"Y";s:10:"SECTION_ID";s:3:"329";s:14:">=PROPERTY_196";s:4:"4000";s:14:"<=PROPERTY_196";s:4:"6000";s:9:"IBLOCK_ID";s:2:"14";}

Если произвести его обработку unserialize, то получится нужный массив фильтра:

array (
  'ACTIVE' => 'Y',
  'SECTION_ID' => '329',
  '>=PROPERTY_196' => '4000',
  '<=PROPERTY_196' => '6000',
  'IBLOCK_ID' => '14',
)

Данный фильтр можно использовать и указывать как фильтр, например, при вызове компонента Элементы раздела (bitrix:catalog.section) или списка новостей (bitrix:news.list) или других подобных компонентов. Это позволит в разы облегчить труд разработчика, и, самое главное, уйти от костылей.

Например, стандартный шаблон компонента bitrix:catalog.element (или bitrix:news.detail), а именно файл template.php необходимо настроить примерно так:


global $arFilter;
$arFilter = unserialize($arResult["PROPERTIES"]["КОД_СВОЙСТВА"]["~VALUE"]);
$APPLICATION->IncludeComponent(
  "bitrix:catalog.section",
  "",
  Array(
    //...множество других параметров
    "FILTER_NAME" => "arFilter",
    //...множество других параметров
)

Внимание: Во время переиндексации перебираются только элементы, которые удовлетворяют фильтру (поле Коллекция (если фильтр пуст, то применяется на все товары выбранного инфоблока)). Следовательно обязательно рекомендуется при перенастройке сбрасывать значения свойств, которые используются для реализации функционала дополнительных товаров. Это делается легко, данным же модулем, действие "Групповое редактирование свойств", выбрать все товары, например условие ID > 0, и сделать свойство пустым. При настройке запуска профилей через крон, профиль сброса должен вызываться раньше других профилей.