Связаться
Секция
Главная arrow  arrow  arrow Документация

Документация


Настройки модуля


css-класс иконки "товар в избранном" по умолчанию закрашенное сердечко (fa fa-heart)
css-класс иконки "товар не добавлен в избранное" по умолчанию контур сердечка (fa fa-heart-o)
Уведомлять пользователей о снижении стоимости товара При установленных модулях "Каталог" будет доступна эта настройка. Подробнее Здесь
Логировать ошибки работы модуля в журнал события Битрикс При включенной настройке будут логироваться ошибки в журнал события битрикс

Системные требования

  • PHP >= 7.4

  • 1С Битрикс редакция "Старт" и выше


Установка

После установки модуля из маркетплейса "1С-Битрикс" в разделе Marketplace - Установленные решения вы увидите новое решение Neti:Избранное. Нажмите иконку с тремя полосками и кликните Установить. Запустится штатный установщик платформы "1С-Битрикс".


Интеграция

Для работы функционала избранного, необходимо подключение js-расширения neti_favorite.neti_lib.

Если у вас в header сайта стоит вывод компонента neti:favorite.icon, то дополнительно подключать расширение не надо. Если в шаблоне сайта вы по какой-либо причине не подключаете компонент neti:favorite.icon, то в header.php шаблона сайта расширение необходимо подключить, выполнив следующий вызов:

<?php \Bitrix\Main\UI\Extension::load('neti_favorite.neti_lib'); ?>


Вывод иконки избранного в списке товаров на основе стандартного компонента catalog.section

Данный компонент доступен, если установлен модуль “Торговый каталог”.

Чтобы вывести иконку “избранного” необходимо:

Перейти в шаблон компонента

/local/templates/#шаблон_сайта#/components/bitrix/catalog.section/#шаблон_компонента#/template.php

либо, если по этому пути нет вашего шаблона, перейти в

/bitrix/templates/#шаблон_сайта#/components/bitrix/catalog.section/#шаблон_компонента#/template.php

a) Если в шаблоне template.php присутствует вызов компонента catalog.item, то необходимо перейти по пути:

components/bitrix/catalog.item/#шаблон_компонента#/card/template.php

и разместить php-код над циклом

<?php
Bitrix\Main\Loader::includeModule('neti.favorite');
$defaultClass = \Bitrix\Main\Config\Option::get('neti.favorite', 'removeClass');
?>

и внутри цикла <?foreach($arResult["ITEMS"] вывести иконку

<a href="#" class="js-favorite <?=$defaultClass ?>" aria-hidden="true"
data-favorite-entity="<?=$arElement['ID'] ?>"
data-iblock-id="<?=$arElement['IBLOCK_ID'] ?>">
</a>


b) Если в шаблоне нет вызова компонента catalog.item.

Над циклом <?foreach($arResult["ITEMS"] …

разместить код

<?php
Bitrix\Main\Loader::includeModule('neti.favorite');
$defaultClass = \Bitrix\Main\Config\Option::get('neti.favorite', 'removeClass');
?>

и внутри цикла <?foreach($arResult["ITEMS"] вывести иконку

<a href="#" class="js-favorite <?=$defaultClass ?>" aria-hidden="true"
data-favorite-entity="<?=$arElement['ID'] ?>"
data-iblock-id="<?=$arElement['IBLOCK_ID'] ?>">



Вывод товаров из избранного на основе стандартного компонента catalog.section

На страницу, где необходимо разместить функционал, добавить вызов компонента catalog.section, выбрать нужный шаблон.
В параметрах компонента, указать “Тип инфоблока” и “Инфоблок” .
В параметре “Имя массива со значениями фильтра для фильтрации элементов” установить значение arrFilter

Далее страницу, где необходимо вывести товары,открываем “В режиме PHP-кода”:

После тега php, где происходит подключение bitrix/header добавить php-код:

<?php
global $arrFilter;
$arIds = [];
if (\Bitrix\Main\Loader::includeModule('neti.favorite')) {
$objFavCookies = new \Neti\Favorite\Cookies();
$arIds = $objFavCookies->getIds();
}
$arrFilter = [
"=ID" => $arIds ?: false
];
?>

После этого должны отображаться только те товары, которые лежат в избранном .


Вывод иконки избранного в детальной карточке товара на основе стандартного компонента catalog.element

Перейти по пути:

local/templates/#Шаблон сайта#/components/catalog.element/template.php

до html разместить код:

<?php
Bitrix\Main\Loader::includeModule('neti.favorite');
$defaultClass = \Bitrix\Main\Config\Option::get('neti.favorite', 'removeClass');
?>

в html разместить иконку в удобном месте:

<a href="#" class="js-favorite <?=$defaultClass ?>" aria-hidden="true"
data-favorite-entity="<?=$arElement['ID'] ?>"
data-iblock-id="<?=$arElement['IBLOCK_ID'] ?>">
<a>



Вывод элементов в избранном на основе в стандартного компонента news.list

В настройках у компонента в поле “Фильтр”, указать arrFilter

Перейти по пути:

local/template/#Шаблон сайта#/components/news.list/#Шаблон компонента#/template.php

Для этого в файле template.php компонента news.list добавить до цикла php-код:

<?php
Bitrix\Main\Loader::includeModule('neti.favorite');
$defaultClass = \Bitrix\Main\Config\Option::get('neti.favorite', 'removeClass');
?>

и внутри цикла <\?foreach($arResult["ITEMS"] в необходимом месте вывести иконку

<a href="#" class="js-favorite <?=$defaultClass?>" aria-hidden="true"
data-favorite-entity="<?=$arItem['ID']?>"
data-iblock-id="<?=$arItem['IBLOCK_ID']?>">


Вывод иконки избранного в детальной карточке элемента на основе стандартного компонента news.detail

Для этого в файле template.php компонента news.detail добавить php-код:

<?php
Bitrix\Main\Loader::includeModule('neti.favorite');
$defaultClass = \Bitrix\Main\Config\Option::get('neti.favorite', 'removeClass');
?>

и в нужном месте вывести иконку

<a href="#" class="js-favorite <?=$defaultClass?>" aria-hidden="true"
data-favorite-entity="<?=$arResult['ID']?>"
data-iblock-id="<?=$arResult['IBLOCK_ID']?>">
<a>


Вывод иконки избранного на основе стандартного компонента news.list

перейти по пути

local/templates/#Шаблон сайта#/components/news.list/#Шаблон компонента#/template.php

до цикла foreach разместить код:

<?php
\Bitrix\Main\Loader::includeModule('neti.favorite');
$defaultClass = \Bitrix\Main\Config\Option::get('removeClass');
?>

В html:

<a href="#" class="js-favorite <?=$defaultClass ?>" aria-hidden="true"
data-favorite-entity="<?=$arItem['ID'] ?>"
data-iblock-id="<?=$arItem['IBLOCK_ID'] ?>">
<a>



Очистка всего избранного

Разместить на странице html элемент:

<a href="" class="js-favorite-clean">

Вывод иконки со счётчиком

После установки модуля, в списке компонентов будет доступен компонент favorite.icon.
Для размещения компонента добавьте следующий код:

<?$APPLICATION->IncludeComponent(
"neti:favorite.icon",
".default",
array(
"COMPONENT_TEMPLATE" => ".default",
"LINK" => "ОТНОСИТЕЛЬНАЯ_ССЫЛКА_НА_СТРАНИЦУ",
),
false
);?>

или сделать это через визуальный редактор

В настройках компонента в параметре “Ссылка на страницу с избранным” укажите ссылку на страницу с избранным.


Как узнать какой шаблон сайта используется

В административной части сайта в поиске набрать “список сайтов”:

Выбрать текущий сайт в списке:

В самом низу будет показан какой шаблон выбран для сайта:

Далее в поиске написать "Шаблоны сайтов":

Вы попадете на страницу со списком доступных шаблонов.
Находите ваш шаблон.

В файловой структуре шаблоны сайтов лежат по пути:
1) /bitrix/templates/#шаблон_сайта#
2) /local/templates/#шаблон_сайта#


Создание раздела

Если у вас еще не создан раздел для вывода товаров в избранном, то это сделать очень легко.

Шаг 1.

Шаг 2.
После создания раздела, на страницу разместить компонент catalog.section:

Шаг 3.
В настройках компонента необходимо установить идентификатор инфоблока.


Изменение размера иконки

По умолчанию в настройках задан css класс “fa fa-heart” и “fa fa-heart-o”, чтобы изменить размер иконки, необходимо прописать в своём css файле:

.fa-heart:before {font-size: Npx}
.fa-heart-o:before {font-size: Npx}


Изменить цвет у иконки компонента favorite.icon

Навести на компонент в режиме правки

выбрать “копировать шаблон компонента”, дать название шаблону и сохранить


Перейти по пути

local/templates/#Назваие_шаблона_сайта#/components/neti/favorite.icon/#название_шаблона_компонента#/style.css

Здесь все стили компонента


Триггерная рассылка

Данный функционал будет работать только при установленных модулях “Торговый каталог ” и “Email-маркетинг”.
Если в настройках модуля установлен флаг "Уведомлять пользователей о снижении стоимости товара", в триггерах модуля "Маркетинг -> Триггерные рассылки", появится новое условие: "Снизилась цена на товар в избранном".

После этого нужно добавить письмо, кликнув по "Редактировать письма".
В письме необходимо разместить компонент bitrix:catalog.show.products.mail, выбрав шаблон "favorites".

В настройках этого компонента в поле "Укажите id товаров через запятую:" необходимо указать {#FAVORITE_PRODUCT_IDS#}.
Имя пользователя хранится в переменной #NAME#.

У письма поставить время через сколько запускаться после события

И нужно запустить рассылку


После этого триггерная рассылка будет работать. Обратите внимание, что по умолчанию триггерные рассылки работают на хитах.


JS-события

В модуле инициируются события добавления в избранное методом BX.onCustomEvent:
controllers-netiFavoriteSendData:success - успешное добавление товара в избранное
controllers-netiFavoriteSendData:error - ошибка добавления в избранное


Добавить подписку на событие можно через
1) BX.addCustomEvent('controllers-netiFavoriteSendData:success', function (data) {});
2) BX.addCustomEvent('controllers-netiFavoriteSendData:error', function (data) {});


API

\Neti\Favorite\Cookies - основной класс по работе с избранным.
Методы:

getIds() Вернуть ID товаров в избранном текущего пользователя
getJson() Вернуть json представление данных о избранном
getArray() Вернуть массив представление данных о избранном [ $iblockId => [ $elementIds ] ]
add((int)$iblockId, (int)$elementId) Добавить в избранное элемент из инфоблока. Входящие параметры: $iblockId - идентификатор инфоблока $elementId - идентификатор элемента инфоблока
delete((int)$iblockId, (int)$elementId) Удалить товар из избранного. Входящие параметры: $iblockId - идентификатор инфоблока $elementId - идентификатор элемента инфоблока
save((int)$iblockId, (int)$elementId) Добавить или удалить элемент избранного куки из текущих (функция сама решит) Входящие параметры: $iblockId - идентификатор инфоблока $elementId - идентификатор элемента инфоблока
clear() Очистить элементы в избранном
set(array $arFavorite) Установить массив избранных, очистив текущие [ $iblockId =>[ $elementIds ] ]

Пример:

$obj = new \Neti\Favorite\Cookies();
$obj->save($iblockId, $elementId)