MyFavorites
MyFavorites – компонент, который позволяет добавить на сайт списки избранного. Основной упор сделан на работу с анонимными пользователями, аналитикой и защитой от ботов.
Основные возможности компонента
Видео-обзор
Купить
Основные возможности компонента
- Создание различных списков избранного.
- Работа как с анонимными пользователями, так и только с зарегистрированными.
- Пользовательские списки избранного (пользователь может сам создавать/переименовывать и удалять свои списки).
- Очистка сессий сайта и удаление кук пользователем не влияют на список избранного у анонимных пользователей.
- Идентификация анонимного пользователя и, как следствие, его списка избранного, посетившего сайт с разных браузеров (метод не срабатывает во всех 100% случаев. На сайте должна быть подключена Google Analytics или Яндекс.Метрика).
- Привязка списка избранного анонимного пользователя к зарегистрированному пользователю при его авторизации или создании заказа на сайте.
- Синхронизация избранного на разных устройствах/браузерах, если ранее не было определено, что они принадлежат одному и тому же пользователю.
- Передача данных о событиях добавления/удаления и очистки списка избранного в Google Analytics и Яндекс.Метрика.
- Черные списки IP.
- Защита от CSRF-атаки.
- Защита с помощью reCAPTCHA 3.
- Лимит на запросы для анонимных и зарегистрированных пользователей.
- Уведомление на Email о подозрительной активности пользователя.
- Доступ в админке сайта к информации о пользователях, их списках избранного и активности.
- Экспорт информации о пользователях и избранном в CSV, XLSX и ODS.
- Корректная работа с Cloudflare.
- Быстрая кастомизация стилей через CSS переменные.
- Возможность подписываться на JS события компонента для кастомизации его работы.
- Нативный JavaScript.
Купить
Поблагодарить автора
Отправить деньги
Комментарии: 7
А как-то можно чтобы
[[!MyFavorites.ids? &toPlaceholder=`myf.ids`]]
[[!+myf.ids:is=`-0`:then=`
[[%myfavorites_info_list_empty]]
`:else=`
[[!pdoPage?
&element=`msProducts`
&parents=`0`
&limit=`12`
&resources=`[[!+myf.ids]]`
]]
<button class="btn btn-primary" data-myfavorites-clear>[[%myfavorites_clear_list]]</button>
[[!+page.nav]]
`]]
через ajax обновлялось при добавлении товара? нужно в modal выводить список
Не совсем понял что обновилось, в модальном окне товар из списка избаранного?
Да.
Я написал скрипт, который при клике на сердечко открывает modal окно
Я написал скрипт, который при клике на сердечко открывает modal окно
const modal = document.querySelector(".modal-wishlist-main");
const closeButton = document.querySelector(".close-btn");
function toggleModal() {
modal.classList.toggle("open");
}
function windowOnClick(event) {
if (event.target === modal || event.target.closest(".modal-wishlist-main")) {
toggleModal();
}
}
document.addEventListener("click", function(event) {
if (event.target.classList.contains("myfavorites-btn")) {
toggleModal();
} else if (event.target === closeButton) {
toggleModal();
} else if (!modal.contains(event.target)) {
if (modal.classList.contains("open")) {
toggleModal();
}
}
});
Но[[!pdoPage?
&element=`msProducts`
&parents=`0`
&limit=`12`
&resources=`[[!+myf.ids]]`
]]
обновляется только при перезагрузки страницы, соответственно при всплывании окна там пусто
Ну тебе нужно перед показом окна делать самому AJAX запрос на сайт что бы подтянуть инфу с списком избранного и добавлять его в модальное окно после чего показывать. Из коробки такого функционала нет.
Понял, спасибо.
Так же на тесте не работают уведомления из коробки ms2
s34437.h5.modhost.pro/index.php?id=3
Так же на тесте не работают уведомления из коробки ms2
s34437.h5.modhost.pro/index.php?id=3
class MyNotifier {
success(msg) {
iziToast.success({
title: 'Success',
message: msg,
});
}
error(msg) {
iziToast.error({
title: 'Error',
message: msg,
});
}
}
window.addEventListener('DOMContentLoaded', e => {
myFavorites.on('init', (self) => {
const notifier = new MyNotifier();
self.setNotifier(notifier);
});
});
и так тоже не работает
При добавлении или удалении в избранное сообщений никаких нет так как по индикатору и так все понятно и нет смысла лишний раз перегружать интерфейс лишней инфой, если они тебе нужны то ты сам должен их показывать
window.addEventListener('DOMContentLoaded', e => {
myFavorites.on('add', (self) => {
self.notifier.success("add success");
});
myFavorites.on('remove', (self) => {
self.notifier.success("remove success");
});
});
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.