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