new

ms3RecentlyViewed

Недавно просмотренные товары для MiniShop3
Автор дополнения
Ivan Bochkarev
Пакетов
7
Закачек
12
Обычно отвечает в течение 2 часов
Автор дополнения
Пакетов
7
Закачек
12
Обычно отвечает в течение 2 часов
Версия 1.2.5-pl
Дата выпуска 02.03.2026
Загрузки 1
Просмотры 84
Внимание, этот компонент требует PHP 8.1 или выше!
Внимание, этот компонент требует MODX 3 или выше.

👁️ Недавно просмотренные товары для MiniShop3


Компонент для отображения блока «Недавно просмотренные» в интернет-магазине на MODX Revolution 3 и MiniShop3. Показ товаров, которые пользователь уже просматривал, увеличивает вовлечённость, время на сайте и конверсию.


Возможности


  • Блок «Недавно просмотренные» — вывод по списку ID (AJAX через коннектор или серверный вызов сниппета)
  • Хранение в браузере — localStorage (по умолчанию) или cookie, без регистрации
  • Синхронизация в БД — для авторизованных пользователей
  • Автосинхронизация при входе — данные из localStorage автоматически переносятся в БД при авторизации
  • Месячное архивирование — настройка ms3recentlyviewed.archive_enabled (по умолчанию включено): агрегация и уменьшение размера основной таблицы
  • Исключение ботов — настройка ms3recentlyviewed.block_bots
  • Выбор метода определения ботовcrawler_detect или regex (в системных настройках)
  • Сниппет «Похожие на просмотренные» — товары из тех же категорий (ms3recentlyviewedSimilar)
  • Админка — дашборд (KPI, топ товаров), история просмотров с фильтрами и экспортом CSV
  • Локализация — MODX Lexicon (ru, en), фронтенд-лексикон через ms3rvLexiconScript
  • Кастомизация — Fenom-чанки, BEM-классы (префикс ms3rv), CSS-переменные







Сниппеты


ms3recentlyviewed

Выводит список недавно просмотренных товаров.


[[!ms3recentlyviewed?
    &tpl=`tpl.ms3rv.product`
    &limit=`8`
    &parents=`0`
    &toPlaceholder=`recentProducts`
]]

Основные параметры:


  • &tpl — чанк для вывода одной позиции
  • &limit — максимальное количество товаров
  • &parents — ограничение по категориям
  • &depth — глубина поиска по родителям
  • &toPlaceholder — сохранить вывод в плейсхолдер
  • &return — формат возврата (tpl / ids / data / json)
  • &showLog — вывод отладочной информации

Важно: рекомендуется вызывать некэшированно [[!ms3recentlyviewed]].


ms3recentlyviewedSimilar

Выводит товары из тех же категорий, что и недавно просмотренные.


[[!ms3recentlyviewedSimilar?
    &tpl=`tpl.ms3rv.similar`
    &limit=`6`
]]

Поддерживает параметры фильтрации и форматирования аналогично основному сниппету.


ms3rvLexiconScript

Подключает фронтенд-лексикон для JavaScript.


[[!ms3rvLexiconScript]]

Определение ботов (crawler_detect / regex)


Компонент позволяет исключать просмотры от поисковых систем и краулеров.


Доступны два метода (выбираются в системных настройках):


  • crawler_detect — используется библиотека jaybizzle/crawler-detect для точного определения краулеров по User-Agent.
  • regex — встроенная проверка по регулярному выражению (/bot|crawl|slurp|spider|mediapartners|googlebot|bingbot|yandex|baiduspider|duckduckbot|teoma|ahrefs|semrush|mj12bot|dotbot|rogerbot|screaming|petalbot|bytespider/i).

⚙️ Требования


MODX 3.0+, MiniShop3, PHP 8.1+, Fenom (pdoTools) 3.x, VueTools (для админки)



📈 Почему выбирают


Блок «Просмотренные ранее» стимулирует повторный интерес, увеличивает глубину просмотра и конверсию. Один сниппет для списка, один — для похожих, коннектор для AJAX. Подробная документация — в пакете.

Changelog

Format: Keep a Changelog

[1.2.5] - 2026-03-02

Fixed

  • ms3recentlyviewedSimilar — закреплена отказоустойчивая цепочка вывода: where -> resources -> ms3recentlyviewed(ids) -> direct(sql+chunk).
  • Лексиконы корзины — при рендере карточек через connector/direct корректно загружается minishop3:cart (ключи вроде ms3_cart_add больше не выводятся как текст).
  • Frontend JS — добавлены авто-подключение viewed.css, авто-добавление класса row для .ms3rv__list и авто-рендер #ms3-recently-viewed/#ms3-similar.

[1.2.4] - 2026-03-02

Fixed

  • ms3recentlyviewedSimilar — стабильный подбор «Похожих»: where передаётся в формате JSON-массива, исключение просмотренных идёт через id:NOT IN.
  • ms3recentlyviewedSimilar — усилен fallback-алгоритм вывода: where -> resources -> ms3recentlyviewed(ids) -> direct(sql+chunk).

[1.2.3] - 2026-03-02

Fixed

  • EncryptedVehicle uninstall — повышена совместимость деинсталляции (класс загружается безопасно; добавлен alias-файл для xPDO class lookup).

[1.2.2] - 2026-03-01

Fixed

  • ms3recentlyviewedSimilar — корректная глубина поиска категорий (depth >= 2) и fallback в корень каталога (parents=0, depth>=3).
  • ms3recentlyviewedSimilar — fallback по ID товаров через БД: ms3rv_get_product_ids_from_parents() с учётом контекста (context_key).
  • connector (action=similar) — явное переключение в рабочий контекст (ms3recentlyviewed.context, по умолчанию web) и защитный fallback при пустом ответе сниппета.
  • ms3recentlyviewed — при пустом ответе от msProducts добавлен прямой fallback-рендер по ids.

[1.2.1] - 2026-03-02

Changed

  • Счётчик просмотренных — показывает общее число товаров в списке (включая текущую страницу); исключение текущего товара из подсчёта убрано
  • ms3recentlyviewedSimilar — при пустых категориях (все просмотренные в корне) глубина поиска msProducts не менее 2, чтобы находить товары в подкатегориях

[1.2.0] - 2026-02-27

Added

  • Интеграция jaybizzle/crawler-detect — определение ботов через библиотеку CrawlerDetect; настройка block_bots_detector (crawler_detect / regex); fallback на regex при отсутствии vendor

[1.1.0] - 2026-02-18

Added

  • lexicon/properties — описания параметров сниппетов (ids, tpl, emptyTpl, limit, depth) вместо ключей
  • license.txt — лицензионное соглашение для коммерческого дополнения
  • readme.txt — краткое описание, требования, установка, возможности (для пакета)
  • Топ-10 — порядковый номер (ранг), колонка «#» сортируется, ранг обновляется при сортировке по любым колонкам
  • Сниппет ms3rvDebugGetViews — заглушка для совместимости (возвращает пустую строку)

Changed

  • Модель xPDO — metadata.mysql.php переведён на формат xPDO 3.0 (PSR-4 autoloading)
  • Структура model — файлы ms3recentlyviewedItem перенесены в model/ и model/mysql/ для корректной загрузки классов
  • Админка — скролл контента вкладок (max-height для .p-tabpanels)
  • KPI «Всего просмотров» — подсказки периодов (за сегодня / неделю / месяц) визуально различаются цветом, отступы между блоками
  • KPI-карточки — заголовки (Всего просмотров, Уникальных товаров и др.) выделены (font-weight, цвет)
  • Стили — все px заменены на rem (единицы в rem)

Fixed

  • Деинсталляция — резолвер удаляет настройки с пустым ключом перед удалением namespace (избегает "Error removing dependent object")
  • Загрузка класса ms3recentlyviewedItem — ошибка «Could not load class» из-за устаревшего формата metadata
  • Экспорт CSV — колонка User показывает «Гость» или email/username вместо 0/1

[1.0.0] - 2026-02-12

Added

  • Блок «Недавно просмотренные» — вывод на страницах товара и каталога
  • localStorage / cookie — хранение списка просмотренных товаров в браузере
  • Синхронизация в БД — для авторизованных пользователей (настройка sync_enabled)
  • Админка — дашборд со статистикой, топ товаров, история просмотров с фильтрами
  • Экспорт CSV — выгрузка истории просмотров
  • TTL и автоочистка — настраиваемый срок хранения (90 дней по умолчанию)
  • Месячное архивирование — сводка за месяц для больших объёмов (опционально)
  • Сниппет «Похожие» — рекомендации товаров из тех же категорий
  • Фильтрация ботов — просмотры от краулеров не сохраняются (block_bots)
  • Слайдер — горизонтальная прокрутка с кнопками навигации
  • Разметка карточек — Bootstrap, формы корзины (ms3_form)

Changed

  • Карточки — tplViewedItem и tplSimilarItem: Bootstrap card, ms3_form
  • Стили — viewed.css: счётчик, слайдер, пустое состояние

Security

  • Коннектор — лексиконы для сообщений sync/get/track
  • Коннектор админки — проверка CSRF (MODX HTTP_MODAUTH)
  • Удаление записей — проверка права save_log

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