Избранное
Страница избранного доступна во всех магазинах по адресу /favorites
.
Чтобы отредактировать содержимое страницы, добавьте в папку templates
файл favorite.liquid
. Массив товаров будет доступен в Liquid-переменной products
.
В избранные можно добавлять только товары, выбранные варианты не сохраняются.
Список товаров сохраняется в аккаунте пользователя.
Если пользователь авторизуется с разных устройств, список будет одинаковый.
Для оптимизации список кэшируется на 15 секунд, поэтому, если быстро добавлять товары с разных устройств или разлогиниваться, счётчик может показывать старые значения.
Назначение атрибутов
data-ui-favorites-add
Кнопка для добавления товара. После добавления товара по умолчанию получает класс favorites-added
. В качестве значения необходимо передать ID товара.
<button data-ui-favorites-add="{{ product.id }}">
Добавить товар в избранное
</button>
data-ui-favorites-delete
Кнопка для удаления товара. После удаления товара по умолчанию получает класс favorites-not-added
. В качестве значения необходимо передать ID товара.
<button data-ui-favorites-delete="{{ product.id }}">
Удалить из избранных
</button>
data-ui-favorites-trigger
Кнопка-переключатель при нажатии на которую, товар добавляется/удаляется из избранного. В зависимости от состояния кнопка получает классы favorites-added
или favorites-not-added
. В качестве значения необходимо передать ID товара.
<button data-ui-favorites-trigger="{{ product.id }}">
<!-- Здесь может быть иконка или текст кнопки -->
</button>
Если при добавлении/удалении необходимо менять текст кнопки, то внутри должен быть дочерний элемент с атрибутами data-ui-favorites-trigger-added-text
и data-ui-favorites-trigger-not-added-text
:
<button data-ui-favorites-trigger="{{ product.id }}">
<span
data-ui-favorites-trigger-added-text="В избранном"
data-ui-favorites-trigger-not-added-text="Добавить в избранное"
></span>
</button>
data-ui-favorites-clear
Кнопка для удаления всех избранных товаров
<button data-ui-favorites-clear>
Очистить
</button>
data-ui-favorites-counter-btn
Ссылка для перехода на страницу избранного. Если ни одного товара не добавлено, то получает класс favorites-empty
. Это может быть удобно для того, чтобы красить ссылку после добавления товаров.
<a href="/favorites" data-ui-favorites-counter-btn>
Избранное
</a>
data-ui-favorites-counter
Счётчик товаров добавленных в избранное
<span data-ui-favorites-counter></span>
Методы класса FavoritesProducts
getFavoritesProducts
Получить текущее состояние избранного
var favoritesState = FavoritesProducts.getFavoritesProducts();
console.log(favoritesState);
add
Добавить товар в избранное
/**
* @param {number} item ID товара
*/
FavoritesProducts.add({
item: 123456
});
remove
Удалить товар из избранного
/**
* @param {number} item ID товара
*/
FavoritesProducts.remove({
item: 123456
});
clear
Очистить избранное
FavoritesProducts.remove();
update
Обновить состояние
FavoritesProducts.update();
События
Событие | Описание |
---|---|
before:insales:favorites_products | Срабатывает перед любым взаимодействием с компонентом избранного |
always:insales:favorites_products | Срабатывает после любого взаимодействия с компонентом избранного |
update_items:insales:favorites_products | Список избранного обновлен |
add_item:insales:favorites_products | Товар добавлен в избранное |
remove_item:insales:favorites_products | Товар удален из избранного |
overload:insales:favorites_products | Достигнуто максимальное количество избранных товаров |
Пример подписки на событие
EventBus.subscribe('add_item:insales:favorites_products', function (data) {
console.log('Товар добавлен в избранное', data);
});