msViewCounter

Счётчик просмотров и live-online для MODX Revolution 3 и MiniShop3
Автор дополнения
Иван Бочкарев
Пакетов
17
Закачек
121
Обычно отвечает в течение суток
Автор дополнения
Пакетов
17
Закачек
121
Обычно отвечает в течение суток
Версия 1.0.0-pl
Дата выпуска 15.06.2026
Загрузки 0
Просмотры 74
Внимание, этот компонент требует PHP 8.2 или выше!
Внимание, этот компонент требует MODX 3 или выше.
👁 msViewCounter — счётчик просмотров и live-online для MODX Revolution 3 и MiniShop3

На карточке товара покупатель видит просмотры и текущий интерес: «Этот товар просмотрели 248 раз», «Сейчас смотрят 3 человека». Один сниппет в шаблон msProduct, режимы real, boost и fake в системных настройках MODX.


Реальные просмотры с дедупликацией по сессии, heartbeat для online, фильтр ботов через CrawlerDetect или User-Agent, batch-очистка active-сессий, готовая карточка с CSS --msvc-*.



Нужен:
  • сниппет [[!msViewCounter]] на карточке и в каталоге (&pid, &tpl);
  • плагин msViewCounterTrack на OnLoadWebDocument: запись просмотра, CSS и JS;
  • настройка msviewcounter_mode: real, boost или fake;
  • connector assets/components/msviewcounter/connector.php для ping active-сессии.

✨ Элементы пакета
  • msViewCounter — вывод (pid, tpl); подключает viewcounter.css
  • tplMsViewCounter — чанк с классом .msvc-counter
  • msViewCounterBootstrap — автозагрузка (OnMODXInit)
  • msViewCounterTrackrecordVisit и assets (OnLoadWebDocument)

📌 Плейсхолдеры
  • [[+pid]], [[+total]], [[+online]]
  • [[+total_text]], [[+online_text]] — готовые строки из лексикона
  • атрибут data-product-id на контейнере .msvc-counter

🆕 Режимы (msviewcounter_mode)
  • real — просмотры в msviewcounter_totals, online через heartbeat и TTL
  • boost — real-данные с base, multiplier и стабильным jitter
  • fake — числа по ID товара и fake_salt; без БД и без JS heartbeat

⚙️ Настройки (префикс msviewcounter_)
  • show_total, show_online, online_ttl, heartbeat_interval
  • dedup_session, block_bots
  • cleanup_interval, cleanup_batch_limit — очистка msviewcounter_active
  • boost: boost_total_base, boost_total_multiplier, boost_*_jitter_max
  • fake: fake_total_min/max, fake_online_min/max, fake_salt

🗄 База данных
  • msviewcounter_totals — одна строка на товар
  • msviewcounter_active — online-сессии; удаление пачками по last_seen

🎨 Стили
  • дефолт: карточка с фоном, рамкой, тенью и status-dot для total/online
  • CSS: assets/components/msviewcounter/css/viewcounter.css
  • тема: .product-card .msvc-counter { --msvc-background; --msvc-accent; --msvc-online-color; … }



🛒 MiniShop3
  • шаблон товара: [[!msViewCounter? &pid=`[[*id]]`]]
  • каталог: [[!msViewCounter? &pid=`[[+id]]`]] в tpl msProducts
  • просмотр считает только msViewCounterTrack на странице msProduct

🚀 Установка
  1. Extras → InstallermsViewCounter
  2. Проверьте сниппет, чанк и оба плагина; очистите кэш MODX
  3. На шаблон товара: [[!msViewCounter? &pid=`[[*id]]` &tpl=`tplMsViewCounter`]]
  4. Для fake на новом магазине настройте fake_* и fake_salt

Примеры:


[[!msViewCounter? &pid=`[[*id]]` &tpl=`tplMsViewCounter`]]

[[!msProducts?
    &parents=`0`
    &limit=`12`
    &tpl=`@INLINE <article>[[+pagetitle]] [[!msViewCounter? &pid=`[[+id]]`]]</article>`
]]

📋 Требования
  • MODX Revolution 3.0+, PHP 8.2+, MiniShop3
  • pdoTools 3.x для Fenom-шаблонов
  • CrawlerDetect опционально для фильтра ботов

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.0.0-pl] - 2026-06-13

Added

  • Snippet msViewCounter for product view count and live online visitors.
  • Chunk tplMsViewCounter with default card markup and .msvc-counter CSS variables (--msvc-*).
  • Plugins msViewCounterBootstrap (OnMODXInit) and msViewCounterTrack (OnLoadWebDocument).
  • Modes real, boost, and fake via msviewcounter_mode.
  • Tables msviewcounter_totals (one row per product) and msviewcounter_active (online sessions).
  • Batch cleanup of stale active sessions by last_seen (cleanup_interval, cleanup_batch_limit).
  • Session deduplication for total views (dedup_session).
  • Bot filtering via CrawlerDetect when installed; built-in User-Agent fallback.
  • Connector and JS heartbeat for active-session ping in real and boost.
  • System settings with prefix msviewcounter_.
  • Build: optional modstore.pro transport encryption (EncryptedVehicle, resolve.encryption.php); enable with encrypt => true in _build/config.inc.php.
  • Repository _preview/: ModStore copy (modstore-description.html, modxpro-post.html, MODSTORE.md) — not included in transport ZIP.
  • User guide: docs/INTEGRATION.md.

Changed

  • Minimum PHP version set to 8.2.
  • Settings centralized in include/settings.php for build and resolver install.
  • Active-session logic moved to a dedicated service.
  • Default counter UI: card layout with background, border, shadow, and status dots.

Fixed

  • MODX boolean settings read correctly from string values 0/1.
  • fake mode does not load heartbeat JS and does not write to the database.
  • Active-session cleanup respects batch limit.

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