[msFavorites] - апгрейд компонента.
msFavorites — списки избранного.

— работа с любыми ресурсами
— работа с любыми пользователями
Основное отличие от ранних версий работа без каких либо сниппетов, нужно только инициализировать скрипт.
Интерактивные примеры тут msfavorites.vgrish.ru/
Вы можете использовать msFavorites где угодно на странице. Для этого нужно подключить сниппет
msFavorites.initialize, указать нужным элементам необходимые параметры вызова.
data-msfavorites-mode — режим работы,
list — список избранного, в данном режиме удаляется элемент избранного
data-data-list — список избранного, например default
data-data-id — идентификатор обрабатываемого ресурса
Список избранного работает для все пользователей. Для авторизованных пользователей идентификатором
служит id пользователя, для неавторизованный id сессии. Избранному анонимных пользователей присваивается флаг
временный и проставляется метка создания, можно задать интервал (кол-во дней) жизни.
пример 2
Постановка:
— требуется вывести список избранного
— возможность удалить ресурс из списка избранного default
— вывести общий счетчик кол-ва в избранном
Вызов:
Результат:

пример 1
Постановка:
— требуется вывести список ресурсов
— возможность добавить ресурс в список избранного default
— вывести общий счетчик кол-ва в избранном
Вызов:
Результат:

В удобном месте шаблона сайта вам нужно вставить вызов сниппета msFavorites.initialize
Основные настройки msFavorites находяться Настройки системы -> msFavorites
front_css — стили фронтенда
front_js — скрипты фронтенда
clear_temporary — очищать временные списки
Вы можете использовать сниппет msFavorites.ids для получения списка ресурсов в избранном.
Так же сниппет задает плейсхолдеры вида
msfavorite.total.default — общее кол-во ресурсов в избранном default

— работа с любыми ресурсами
— работа с любыми пользователями
Основное отличие от ранних версий работа без каких либо сниппетов, нужно только инициализировать скрипт.
Интерактивные примеры тут msfavorites.vgrish.ru/
Основное
Вы можете использовать msFavorites где угодно на странице. Для этого нужно подключить сниппет
msFavorites.initialize, указать нужным элементам необходимые параметры вызова.
data-msfavorites-mode — режим работы,
list — список избранного, в данном режиме удаляется элемент избранного
data-data-list — список избранного, например default
data-data-id — идентификатор обрабатываемого ресурса
Особенности
Список избранного работает для все пользователей. Для авторизованных пользователей идентификатором
служит id пользователя, для неавторизованный id сессии. Избранному анонимных пользователей присваивается флаг
временный и проставляется метка создания, можно задать интервал (кол-во дней) жизни.
пример 2
Постановка:
— требуется вывести список избранного
— возможность удалить ресурс из списка избранного default
— вывести общий счетчик кол-ва в избранном
Вызов:
<div id="pdopage">
<div class="rows">
[[!pdoPage?
&parents=`0`
&element=`msProducts`
&resources=`[[!msFavorites.ids]]`
&tpl=`@INLINE
<div class="msfavorites-parent">
<a class="msfavorites"
data-click
data-data-id="[[+id]]"
data-data-list="default"
data-msfavorites-mode="list">
<i class="msfavorites-icon-heart"></i>
</a>
<span class="msfavorites-total" data-data-list="default">0</span>
[[+pagetitle]]
</div>
`
&ajaxMode=`default`
]]
</div>
[[!+page.nav]]
</div> Результат:

Примеры
пример 1
Постановка:
— требуется вывести список ресурсов
— возможность добавить ресурс в список избранного default
— вывести общий счетчик кол-ва в избранном
Вызов:
<div id="pdopage">
<div class="rows">
[[!pdoPage?
&parents=`0`
&element=`msProducts`
&tpl=`@INLINE
<a class="msfavorites"
data-click
data-data-id="[[+id]]"
data-data-list="default">
<i class="msfavorites-icon-heart"></i>
</a>
<span class="msfavorites-total" data-data-list="default">0</span>
[[+pagetitle]]
`
&ajaxMode=`default`
]]
</div>
[[!+page.nav]]
</div> Результат:

Подключение msFavorites
В удобном месте шаблона сайта вам нужно вставить вызов сниппета msFavorites.initialize
[[!msFavorites.initialize]] Настройка msFavorites
Основные настройки msFavorites находяться Настройки системы -> msFavorites
front_css — стили фронтенда
front_js — скрипты фронтенда
clear_temporary — очищать временные списки
Списки избранного
Вы можете использовать сниппет msFavorites.ids для получения списка ресурсов в избранном.
[[!msFavorites.ids?&list=`default`]]list — название списка избранногоТак же сниппет задает плейсхолдеры вида
[[!+msfavorite.list.default]]
[[!+msfavorite.total.default]]msfavorite.list.default — список ресурсов в избранном defaultmsfavorite.total.default — общее кол-во ресурсов в избранном default
Комментарии: 58
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Что у меня нет предложения обновления:
пример msfavorites.vgrish.ru/favorites.html
раньше страница перезагружалась, при удалении последнего избранного товара, и выскакивала дефолтная надпись:
Ещё вопрос:
у меня сразу после тега bodi выскочила вот такая надпись: msFavorites::__call says: isRemove
что это может быть?
вы где то используете старый сниппет… советую вам деинсталировать пакет, удалить все сниппеты и затем установить заново…
а так, спасибо за проделанную работу!
отличный компонент!
пожалуйста!
именно он выставляет плейсхолдеры
либо второй вариант если скрипт компонента присутствует на странице можно просто вставить где либо в код страницы
и тогда скрипт будет инициализирован и подгрузится кол-во в избранном
Спасибо.
Я что-то сразу не заметил, но у меня после обновления вот такая картина с меню msfavorites
и ошибка:
этот рудимент вырезан с корнями. Не вижу никакой пользы тащить это далее…
если вам необходим функционал вывода избранного у пользователей напишите в ТП, набросаю вызов сниппета для вывода.
Спасибо!
Uncaught TypeError: Cannot read property 'fn' of undefined
at default.min.js?v=d79f078f:formatted:183
at default.min.js?v=d79f078f:formatted:240
Пишите в ТП и приложите доступы если проблемы…
Спасибо!
Доступы, к сожалению дать не смогу, т.к. сайт еще на локалке висит.
и покажите эту проблему.
Спасибо!
Конкретно ошибку по этому куску кода выдает:
a.fn.msfavorites = function() {
…
}(window.jQuery, msFavoritesConfig);
Поправил, обновитесь.
Спасибо!
t.fn.msfavorites = function() {
}(window.jQuery, msFavoritesConfig);
ругается… кэш почистил — тоже самое(
все работает, ошибок нет.
Накати обновлние, кеш и все должно работать.
Добавил сортировку и параметр для сортировки избранного в сниппет msFavorites.ids
дефолт
можно обновить компонент…
В старой версии активировался переход на страницу избранных при добавлении.
Если не добавлять, то нет перехода.
Возникла идея чтобы в меню появлялось сердечко при условии, что хоть 1 товар там есть.
И в футер наверно тоже сердечко нужно. Если ничего не отмечено, то и ничего не мозолит глаза.
Есть такая возможность?
там есть то о чем вы говорите.
захожу на сайт с чистой сессией — все ок, через какое-то время или после каких-то действии в счетчике избранного (код чуть ниже) вместо нуля — единичка, причем при обновлении страницы видно что мелькает ноль и затем единичка. Захожу на страницу избранных товаров — там пусто.
К сожалению, связь не отловил, в связи с чем так происходит.
Описываемый глюк происходит в таком блоке:
все новое, кроме ModX=2.5.7 — пока очкую обновлять на продакшене
предусмотрена ли возможность для вывода общего количества элементов указанных списков, типа
Вы можете в js обработать ответ, получить общее кол-во и вывести куда нужно.
Мне нужно под каждым товаром показать у скольких людей он в избранном. Запутался в новой документации, до апгрейда как-то попроще было что ли.
добавить разметку вида
пример msfavorites.vgrish.ru/several-lists.html
Но пришлось откатиться на первую версию компонента (благо покупал давно и осталась) т.к. во 2й существует сейчас непреодолимая вещь:
У меня в ручную реализованы схожие товары и есть ведомый товар, который доступен, остальные товары (связанные) отдают 301 редирект на главный товар (страницы товаров со своими ID). Так вот при попытке добавить связанные товары — появляется ошибка в консоли js. и все. Как только убираю редиректы со связанных товаров — все работает.
Убил день на то чтобы понять это…
Зачем проверять доступность ресурса по ID — мне не ясно.
Есть просьба убрать эту проверку или как-то сделать ее выключаемой, т.к. думаю могут в перспективе быть подобные проблемы у людей (хотя сомневаюсь — наверное я единственный ))) ) но все же.
Спасибо.
чтобы не добавлять в список избранного того чего нет.
Сначала стоит разобраться что за ошибка у вас была и каким образом реализован редирект.
Уточните, спасибо!
Ошибок в логе небыло, лишь после нажатия на «Добавить в избранное» ничего не происходило, а в консоли браузера писалась (самим скриптом) error… (2 слова).
Ошибку отправляет класс на сколько я сумел влезть в код: класс (public function processResource($rid = 0)) в файле msfavorites.class.php. Точнее не отправлял а не давал сработать компоненту.
А у меня подчиненные ресурсы отдают редирект таким кодом:
этот код в снипете на странице конкретного товара.
Если этих данных достаточно, то ок. Иначе чуть позже на тестовом воссоздам ситуацию.
добавил редирект на товар 1
msfavorites.vgrish.ru/katalog/tovar-1.html как видим тут msfavorites.vgrish.ru
все нормально функционирует и нет никаких ошибок.
Так что дело явно не в этом.
Стоит задача реализовать уведомление об добавлении в избранное, как это можно сделать? После добавления, должно выводится модальное окно, с текстом, что Товар 32 был добавлен в избранное. Пока реализовал на jQuery, но есть ли предусмотренный вариант или как лучше это сделать?
Предусмотренного варианта нет, можно например использовать уведомления minishop
Подскажите, данный компонент работает для неавторизованных пользователей?
Да.
Всему причина msfavorites assets/components/msfavorites/js/default.js
а имеено DOMNodeInserted
заменить на
пробелема решена