MyFavorites

Создание списков избранного
Автор дополнения
Prihod
Пакетов
38
Закачек
13 510
Обычно отвечает в течение недели
Автор дополнения
Пакетов
38
Закачек
13 510
Обычно отвечает в течение недели
Версия 3.0.0-beta
Дата выпуска 21.07.2026
Загрузки 43
Просмотры 2 580
MyFavorites – компонент для добавления на сайт списков избранного (закладок): публичный REST API и фронтенд-виджет без внешних зависимостей. Основной упор сделан на работу с анонимными пользователями, аналитику и защиту от ботов.



Списки избранного

  • Неограниченное число именованных списков избранного.
  • Пользовательские списки — посетитель может сам создавать, переименовывать и удалять свои списки.
  • Работа как с анонимными пользователями, так и только с зарегистрированными (настраивается).
  • Готовые сниппеты для вывода:
    MyFavorites

    MyFavorites.btn

    MyFavorites.counter

    MyFavorites.lists

    MyFavorites.ids

    MyFavorites.share

Анонимные пользователи и синхронизация

  • Очистка сессий сайта и удаление кук не влияют на список избранного у анонимного пользователя.
  • Идентификация анонимного пользователя (и его списка избранного), посетившего сайт с разных браузеров — по меткам Google Analytics или Яндекс.Метрики (метод срабатывает не во всех 100% случаев; на сайте должна быть подключена аналитика).
  • Привязка списка избранного анонимного пользователя к зарегистрированному аккаунту при авторизации или создании заказа на сайте.
  • Синхронизация избранного на разных устройствах и в разных браузерах, даже если ранее не было определено, что они принадлежат одному пользователю.
  • Мгновенное обновление индикатора избранного на всех кнопках товара на странице и между открытыми вкладками браузера.

Публичные ссылки и аналитика

  • Публичные ссылки на списки избранного — посторонний посетитель может просмотреть список по ссылке без авторизации; копирование ссылки в буфер обмена одним кликом.
  • Передача событий добавления, удаления, очистки и шаринга списка избранного в Google Analytics и Яндекс.Метрику.

Безопасность и защита от ботов

  • Защита от CSRF-атак.
  • Чёрные списки IP.
  • Лимит на количество запросов (rate limit) для анонимных и зарегистрированных пользователей.
  • Защита с помощью reCAPTCHA v3 и Яндекс SmartCaptcha.
  • Корректная работа за reverse-proxy и CDN (Cloudflare и др.) — доверенные прокси для заголовка X-Forwarded-For.
  • Уведомление администратора о подозрительной активности (превышение лимита запросов, провал капчи, бан по IP) на Email или в Telegram.

Администрирование

  • Дашборд в админке: ключевые показатели, динамика активности за 7/30/90 дней, топ ресурсов, распределение действий и типов пользователей, лента событий и блок «Безопасность».
  • Доступ к информации о пользователях, их списках избранного и активности.
  • Экспорт информации о пользователях и избранном в CSV, XLSX и ODS.
  • Журнал действий с аудитом и автоматической очисткой устаревших записей и истёкших банов по расписанию (CRON).

Сводный дашборд: KPI, графики активности, топ ресурсов, лента событий и блок «Безопасность» (срабатывания защиты):








Разделы в админке

Пользователи — все посетители (анонимные и авторизованные): идентификаторы, браузер, число позиций в избранном.




Избранное — все позиции избранного по всем посетителям, с группировкой по ресурсам и фильтрами.




Списки — все списки избранного (

default
и пользовательские): идентификатор, публичный ключ, контекст, язык и хост.




Бан лист — управление чёрным списком IP: добавление, редактирование и удаление, временные и перманентные баны.




Лог — журнал действий (включая «Срабатывание защиты») со статусом, IP и агентом.




Для разработчика

  • Публичный REST API — для фронтенд-виджета, мобильных приложений и кастомного фронтенда.
  • Фронтенд-виджет на нативном TypeScript, без внешних JS-зависимостей.
  • Быстрая кастомизация стилей через CSS-переменные.
  • Подписка на JS-события компонента и системные события MODX (
    OnMyFavorites*
    ) для расширения сторонними плагинами.

Видео-обзор


Видео записано на версии для MODX 2, но актуально для текущей версии.

RuTube

Полная документация

[3.0.0-beta] - 2026-07-21

Первая версия для MODX Revolution 3.x — компонент полностью переписан с нуля (PHP >= 8.4, namespaced-ядро MODX 3, PSR-4, сервис-ориентированная архитектура). Чистая установка; совместимость с данными, куками и настройками старой версии для MODX 2 не предусмотрена.

Добавлено

  • Публичный REST API (assets/components/myfavorites/api.php) для фронтенд-виджета и стороннего кода (мобильные приложения, кастомный фронтенд)
  • Фронтенд-виджет на нативном TypeScript (сборка Vite), без внешних JS-зависимостей; кастомизация через CSS-переменные и подписку на JS-события
  • Сниппеты MyFavorites, MyFavorites.btn, MyFavorites.counter, MyFavorites.lists, MyFavorites.ids, MyFavorites.share
  • Пользовательские списки избранного: создание, переименование и удаление своих списков посетителем (настройка myfavorites_custom_favorite_lists)
  • Публичные ссылки на списки избранного с копированием ссылки в буфер обмена одним кликом
  • Синхронизация списков между устройствами: слияние избранного при авторизации или совпадении меток аналитики (настройка myfavorites_sync_favorite), ленивая инвалидация кэша по версии
  • Синхронизация индикатора избранного: обновление всех кнопок товара на странице и между открытыми вкладками браузера через BroadcastChannel (настройка myfavorites_tab_sync)
  • Идентификация анонимных посетителей по собственной cookie (_mfuid, дублируется в localStorage) и меткам систем аналитики (_ym_uid, _ga)
  • Экспорт данных избранного и посетителей из админки в CSV/XLSX/ODS; реестр отчётов задаётся настройкой myfavorites_export_handlers
  • Дашборд в админке: KPI, динамика активности (7/30/90 дней), топ ресурсов, распределения действий/типов пользователей/браузеров, лента событий и блок «Безопасность» (срабатывания защиты)
  • Уведомления администратора о срабатывании защиты (превышение лимита запросов, провал капчи, бан по IP); каналы доставки email и Telegram, канал заменяем через NotifierInterface
  • Защита REST API: CSRF-токены, чёрные списки IP, лимит запросов (rate limit), reCAPTCHA v3, Yandex SmartCaptcha, доверенные reverse-proxy для заголовка X-Forwarded-For
  • Аналитика: передача событий добавления/удаления/очистки/шаринга в Google Analytics и Яндекс.Метрику
  • Системные события OnMyFavorites* (добавление/удаление/очистка избранного, операции со списками, создание/восстановление/слияние посетителей, экспорт, срабатывание защиты) для расширения сторонними плагинами
  • Журнал действий с аудитом и автоматическая очистка устаревших записей и истёкших банов по CRON (скрипт cron/clear.php)
  • Лексиконы ru, en, uk

[1.1.1-pl] - 2026-07-13

Добавлено

  • Сниппет MyFavorites для вывода текущего списка избранного, с опциональной обёрткой (параметр tplWrapper, чанк tpl.MyFavorites) с кнопками очистки списка и публичной ссылки
  • Параметр tplEmpty у сниппетов MyFavorites и MyFavorites.share (чанк по умолчанию tpl.MyFavorites.empty) для вывода сообщения о пустом списке/недействительной ссылке
  • Параметр element у сниппета MyFavorites.share (по умолчанию: pdoResources)

[1.1.0-pl] - 2026-07-08

Добавлено

  • Публичные ссылки на списки избранного: сниппет MyFavorites.share для просмотра списка избранного посторонним посетителем по ссылке, поле share_url у сниппета MyFavorites.lists
  • Системные настройки для публичных ссылок: myfavorites_share_key_var, myfavorites_share_key_length, myfavorites_share_page_id
  • Скрипт scripts/generate_lists_share_key.php для генерации ключей публичных ссылок у списков, созданных до обновления

[1.0.2-pl] - 2025-04-18

Исправлено

  • Совместная работа с MinifyX

[1.0.1-beta] - 2024-12-1

Добавлено

  • Интеграция с модулем Cabinet

[1.0.0-beta] - 2024-05-13

Релиз

Последние обсуждения в сообществе MODX.pro