Выбрать курс
0  /  11

Товарные коллекции в разделах

Инструкция

Модуль устанавливается стандартно. На этом не будем долго заострять внимание, об этом подробно написано на странице  О Маркетплейсе.

После установки модуля на странице редактирования разделов любого инфоблока появляется дополнительная вкладка с названием Товарные коллекции. В этом можно убедится, открыв любой раздел любого инфоблока на редактирование в административном разделе сайта.

Редактирование раздела инфоблока

Вкладка "Товарные коллекции"

На данной вкладке формируются все необходимые условия/правила подбора товаров (элементов инфоблока). Согласно настроенным условиям элементы инфоблока привязываются к данному настроенному разделу инфоблока (далее раздел-коллекция).

Модуль имеет 2 конструктора условий:

  1. Интерфейс скидок
    Примечание: Доступен в редакциях 1С-Битрикс, где есть модуль Торговый каталог и Интернет-магазин.

  2. Интерфейс фильтра
    Примечание: Доступен во всех редакциях 1С-Битрикс.

Отвязать товары от коллекции

Отдельного механизма, чтобы отвязать товары от раздела-коллекции нет. Т.к. не видим в этом особой необходимости. Этот момент можно решить множествами способов:

  1. Использование самого модуля Товарные коллекции в разделах. Мы рекомендуем настроить какое нибудь абсурдное условие коллекции и выполнить переиндексацию. Например "Название = бла бла бла )". И т.к. вряд ли товар с таким названием найдется в вашем каталоге, то все товары отвяжутся.
  2. Использование дополнительных модулей, такого как Инфоблоки, инструменты и т.п.
  3. Если вы являетесь счастливым обладателем другого нашего модуля Инструменты разработчика, то там тоже имеется групповое действие отвязать товары от раздела.

Примеры

В данной главе приведены наиболее яркие, распространенные примеры использования модуля.

Посадочные страницы

С помощью конструктора удобно собирать наборы товаров в те или иные разделы инфоблока. Конечно, чаще всего товары уже структурированы уже по своим разделам, но этого не достаточно. Очень часто возникает задача собирать товары в некоторые особо продвигаемые страницы сайта, например, по бренду, по цвету, по времени года или любые другие произвольные выборки.

Например, необходимо в раздел "Красные платья" собрать все доступные товары из инфоблока, содержащие фразу "платье" и имеющие цвет (свойство) "красный". Выглядеть это будет следующим образом:

Условия набора

Внимание! После указания всех необходимых условий, правила коллекции необходимо сохранить, нажав стандартную кнопку «Сохранить» или «Применить». 

После этого возвращаемся на форму редактирования нашего раздела, переходим в нужную закладку «Товарные коллекции», становится доступна кнопка ПЕРЕИНДЕКСАЦИИ. Необходимо ее выполнить:

Переиндексация коллекции

Все, коллекция готова к работе.

Примечание: В момент переиндексации товары привязываются к текущему разделу инфоблока, но при этом они также останутся привязанными к своим старым разделам, для которых не настроена коллекция. Поэтому, если есть необходимость, чтобы товар отвечал только по одному адресу URL, нужно настроить поддержку канонических ссылок. Подробнее об этом в документации: Основной раздел элемента и поддержка канонических ссылок.
Внимание! Переиндексацию необходимо выполнять после создания коллекции или после редактирования ее условий. Если же у вас включена переиндексация агентом, то в ручной переиндексации нет необходимости, коллекция обновится согласно раписанию функцией агента.

Использование стандартных разделов инфоблока в качестве коллекций и привязка товаров к ним влечет ряд преимуществ:

  • сохраняются все возможности разделов инфоблока, такие как возможность задавать уникальную SEO-информацию, описание и уникальный URL (символьный код) и прочие моменты;
  • разделы-коллекции автоматически будут выведены на сайте: в меню, в каталоге или иных блоках, есть вывод информации из этого инфоблока уже настроен:
  • нет отдельных компонентов, поэтому нет необходимости что-либо подгонять под дизайн сайта, все заработает в рамках текущего вашего дизайна, если вывод каталога уже настроен;
  • поддежка умного фильтра (bitrix:catalog.smart.filter).

Товары со скидкой (новый принцип)

Ранее для сбора товаров со скидкой рекомендовался следующий подход - реализация с помощью коллекций.

Но продукт постоянно развиваем и появились новые возможности - «Действия над товарами со скидкой» со следующими значениями:

  • Учитывать только товары со скидкой.
  • Дополнять товарами со скидкой.
  • Исключать товары со скидкой.

  1. При выборе «Дополнять товарами со скидкой», имеющиеся акционные продукты добавятся к коллекции вместе с товарами, попадающими под основные условия.
  2. При выборе «Учитывать только товары со скидкой» будут браться только акционные товары, но кроме того, эти же товары будут проверяться на попадание под основные условия.
  3. При выборе «Исключать товары со скидкой» из товаров, удовлетворяющих основным условиям, будут исключаться дисконтные товары.
Данный подход работает только для скидок на товары, для правил работы с корзиной не подходит. Если у вас скидки не включены, то рекомендуем посмотреть документацию -  Два режима работы Интернет-магазина.

Товары со скидкой. Акции, распродажа

Внимание! Данный подход устарел и не очень удобен. Для сбора товаров со скидкой рекомендуем новый способ.

В 1С-Битрикс нет явного признака (поля или свойства инфоблока), означающего, что товар доступен по скидке. Поэтому вывод акционных товаров на той или иной странице может оказаться далеко не тривиальной задачей. Но с помощью модуля  Товарные коллекции в разделах этот вопрос можно легко решить. Т.к. один из конструкторов аналогичен конструктору условий в скидках, то достаточно настроить раздел-коллекцию с такими же условиями как и в скидках. 

Например, имеются 2 настроенные программы скидок:

Список скидок

Условия первой выглядят следующим образом:

Условия акции 1

Условия второй:

Условия акции 2

Необходимо создать раздел инфоблока с условиями, комбинирующими данные скидки:

Коллекция товаров со скидкой

В итоге получится посадочная страница товаров со скидкой.

При необходимости скидки можно не комбинировать, а, наоборот, создать разные, например, можно создать общую категорию (раздел инфоблока) Распродажа и настроить подразделы-коллекции в них: товары со скидкой 5%, 10%, 25% и т.п.

Или в имеющихся базовых категориях создать подразделы с акционными товарами, например:

  • Телевизоры - Акции
  • Компьютеры - Акции
  • Аксессуары - Акции
  • ...
Вариантов множество, все зависит от Ваших задач.

Разные структуры разделов на сайте и в 1С или иной учетной программе

У коллекций имеются дополнительное условие - Не менять активность коллекции, об этом указано на странице Интерфейс скидок. При указании которого игнорируется изменение поля Активность у раздела-коллекции, следовательно при таких операциях как обмен товарами с 1С или иными внешними программами деактивация разделов не происходит.

Это позволяет создавать структуру вашего каталога абсолютно отличающейся от структуры в вашей внешней учетной программе.

Как это сделать?

Рассмотрим на примере выгрузки номенклатуры из 1С:

Обычно при выгрузке товаров создаются все необходимые объекты, поля и связи, такие как: разделы, свойства товаров, значения свойств, товары и тому подобное.

После первого же обмена с данными можно начать работать, создать иерархию разделов инфоблока (разделы-коллекции) и настроить условия попадания товаров в те или иные разделы с помощью конструкторов: Интерфейс скидок или Интерфейс фильтра, зависит от того, какой больше подойдет для той или иной коллекции. Останется только деактивировать ненужные разделы, которые были созданы при обмене, чтобы на сайте они не выводились.

Таким образом будет создана оригинальная иерархия вашего каталога.


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

Привязка раздела к нескольким родителям

Завсегдатая задача - привязка раздела инфоблока к нескольким разделам родителям. На многих форумах встречается этот вопрос. Суть проблемы в том, что в 1С-Битрикс нет возможности привязать какой либо раздел к нескольким родителям, как это, например, легко делается для элементов инфоблока. Для чего так сделано и хорошо ли это или плохо, нам остается только догадываться.

Модифицировать модули и компоненты 1С-Битрикс для решения данного вопроса является, на наш взгляд, не лучшим способом, т.к. правка ядра cms ни к чему хорошему не приведет.

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

Конструктор с полем раздел - интерфейс скидок

Или то же самое с использованием интерфейса фильтра:

Конструктор с разделом - Интерфейс фильтра

Использование данного условия позволяет решить эту задачу. А именно, создать подразделы-дубли в настройках коллекций, для которых указать разделы, товары которых должны в них также отображаться.

Получится раздел с таким же названием, символьным кодом и прочими характеристиками, с теми же товарами но привязанный к другому родительскому разделу.

Примеры:

Таким образом можно создать необходимое количество подразделов-дублей в нужных родительских разделах.

Добавление категорий инфоблока (разделов, коллекций) в избранное или в корзину на ЦМС 1С-Битрикс

Модуль Товарные коллекции позволяет создавать категории из набора нужных товаров по гибким условиям. Но как быть, если возникает задача добавлять всю эту категорию (коллекцию) сразу в корзину, не товары по отдельности, а коллекцию целиком, как один объект, как одна позиция в корзине?

Компоненты ЦМС 1С-Битрикс: корзины, списка заказов с товарами, отложенные товары, - не позволяют работать с категориями инфоблока, а только с товарами. Можно разработать свои компоненты, но это не лучший вариант, особенно, если вести заказы в административной панели или сторонних учетных системах.

Внимание! В статье приведен пример механизма, описывающий принцип реализации. Для внедрения отраженного подхода потребуется помощь программистов.

Мы также можем в этом помощь, но за отдельное вознаграждение. Обратиться за помощью можно в наш чат в правом нижнем углу нашего сайта (в рабочее время отвечаем достаточно оперативно). Но оставляем за собой право отказать в доработке без объяснения причин.

Мы предлагаем следующий подход:

  1. Создать отдельный служебный инфоблок (торговый каталог) от основного каталога, отключить от поисковой индексации.
  2. Создать свойство для связи служебных товаров с категориями основного каталога. Например, это может быть свойство типа "Привязка к разделам" или "Число", как вам удобнее.
  3. В данном инфоблоке необходимо будет создать товары-аналоги нашим категориям (товарным коллекциям). Для каждого товара, указать явную связь с товарной коллекцией через созданное нами свойство.
  4. Вместо категорий (коллекций) добавлять в корзину товары-аналоги из служебного инфоблока.

    Например, если для вывода разделов-коллекций вместо стандартного компонента bitrix:catalog.section.list использовать компонент для вывода товаров bitrix:catalog.section, но из служебного инфоблока (задав для него нужный предустановленный фильтр), то весь механизм давления в корзину уже будет доступен. Останется немного кастомизировать шаблон, чтобы товары вели на страницу категории, а неизвестно куда - на страницы служебного товара.

Дополнительные возможности

Выделение разделов-коллекций и экспорт в Excel

Иногда возникает задача как то выделить коллекции, отдельно их разобрать или даже выгрузить в файл. По умолчанию явного функционала для этого нет. Но можно опираться на штатный функционал от 1С-Битрикс - экспорт в Excel файл.


Импорт в Эксель


Чтобы выделить разделы-коллекции от остальных разделов, достаточно создать пользовательское свойство для разделов, например, с названием Раздел-коллекция? и с кодом UF_IS_COLLECTONS

Является ли раздел товарной коллекцией


Данное свойство будет доступен у разделов и при создании коллекций можно вручную отмечать разделы как коллекция и сортировать и экспортировать разделы в Excel файл:

Фильтр

Вернет разделы-коллекции:

коллекции


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

  • OnAfterScoderCollectionEdit - вызывается после редактирования коллекции. Параметр функции $arFields - массив полей коллекции
  • OnAfterScoderCollectionDelete - вызывается после удаления коллекции. Параметр функции $section_id - ИД раздела-коллекции.
Пример программного кода, который необходимо разместить в init.php. Код является примером, не рекомендуем к размещению без помощи разработчиков.

//обработчик события: после редактирования коллекции
AddEventHandler("scoder.collections", "OnAfterScoderCollectionEdit", "OnAfterScoderCollectionEditHandler");
function OnAfterScoderCollectionEditHandler($arFields)
{    
    //Помечаем раздел, что он является "Товарной коллекцией"
    $ar_load = array(
		"UF_IS_COLLECTONS" => 1
	);
	if ($arFields["IBLOCK_ID"]>0 && $arFields["SECTION_ID"]>0)
		$GLOBALS["USER_FIELD_MANAGER"]->Update("IBLOCK_".$arFields["IBLOCK_ID"]."_SECTION", $arFields["SECTION_ID"], $ar_load);    
}
//обработчик события: после удаления коллекции
AddEventHandler("scoder.collections", "OnAfterScoderCollectionDelete", "OnAfterScoderCollectionDeleteHandler");
function OnAfterScoderCollectionDeleteHandler($section_id)
{
    //Помечаем раздел, что он не является "Товарной коллекцией"
	if ($section_id>0)
	{
		$ar_load = Array(
			"UF_IS_COLLECTONS" => 0,
		);
		$arFilter = array('ID' => $section_id);
		$rsSect = CIBlockSection::GetList(array('left_margin' => 'asc'),$arFilter,false,array("ID","IBLOCK_ID"),array("nTopCount" => 1));
		if ($arFields = $rsSect->GetNext())
		{
			$GLOBALS["USER_FIELD_MANAGER"]->Update("IBLOCK_". $arFields["IBLOCK_ID"] ."_SECTION", $section_id, $ar_load);
		}
	}
}