Автор дополнения
Иван Бочкарев
Пакетов
30
Закачек
187
Обычно отвечает в течение суток
Автор дополнения
Пакетов
30
Закачек
187
Обычно отвечает в течение суток
Версия 1.2.2-pl
Дата выпуска 31.08.2026
Загрузки 7
Просмотры 409
Внимание, этот компонент требует PHP 8.2 или выше!
Внимание, этот компонент требует MODX 3 или выше.
msReviews — отзывы, рейтинг и вопросы покупателей для MiniShop3 на MODX 3.

  • На странице товара: звёзды, тексты, фото, блок вопросов и ответов и разметка для поисковиков (schema.org).
  • В каталоге — строка ★ 4.8 (32).
  • После заказа — письмо со ссылкой на форму с меткой «подтверждённая покупка».
  • Модерация — во Vue-админке, без правок ядра магазина.

Кому подойдёт: интернет-магазин на MODX 3 + MiniShop3, где нужны отзывы с модерацией, блок вопросов и ответов на карточке, рейтинг в листинге и сбор отзывов после доставки.

Назначение
  • отзывы с оценкой 1–5 и модерацией.
  • вопросы и ответы на странице товара.
  • метку «подтверждённая покупка» по заказам MiniShop3.
  • фото к отзывам, «полезно», правку своего отзыва.
  • микроразметку товара и отзывов для Google и Яндекса.

Рейтинг и админка. Средняя оценка — по формуле Wilson или простому среднему, ключ msreviews_aggregate_algorithm в системных настройках. Сниппеты закрывают карточку товара, каталог и главную. Админка на Vue 3 через VueTools.

Как это работает
  1. Покупатель пишет отзыв или вопрос на странице товара — или переходит по ссылке из письма после смены статуса заказа MiniShop3.
  2. Скрытые поля, лимиты и чёрные списки отсекают спам. Капчу подключаете плагином на событие msrOnCaptchaVerify — см. события MODX.
  3. Отзыв уходит на модерацию или сразу на сайт — по настройкам модерации.
  4. Вы публикуете, отвечаете и закрепляете в Extras → msReviews. Средний рейтинг пересчитывается, звёзды обновляются в каталоге и на карточке товара.
  5. Сниппет msReviewSchema выводит разметку schema.org один раз на странице товара. На главной и в категории не дублируйте.

Пример на живом сайте. Скриншоты ниже — витрина, админка, каталог, виджеты главной. Демо: demo.ibochkarev.su, карточка товара или «Стенды → msReviews».

Возможности
  1. Отзывы на карточке. Сниппет msReviews — фильтры (подтверждённые покупки, с фото, с ответом магазина, «рекомендую»), постраничный список, аватары, голос «полезно», правка и удаление своего отзыва.
  2. Форма отзыва. Сниппет msReviewForm — звёзды с подписью, текст, согласие, загрузка фото, экран после отправки. По желанию — плюсы/минусы и оценки по критериям.
  3. Рейтинг на карточке и в каталоге. msRatingSummary на странице товара. В сетке — чанк tplRatingCatalog или msRatingBadge (★ средняя и число отзывов). Подключение в каталоге — инструкция.
  4. Вопросы и ответы. msQuestions и msQuestionForm, либо msQnaBlock — форма на карточке, модерация, ответ магазина из админки, письмо покупателю. Вкладка «Вопросы» в msReviewsTabbed, виджет msQuestionsLatest на главной.
  5. Подтверждённая покупка. Метка по ссылке из письма или привязке к заказу MiniShop3. Поток — в интеграции и настройках.
  6. Письма после заказа. Очередь «оставьте отзыв» при смене статуса заказа. Отправка из админки или по расписанию (cron) — см. быстрый старт.
  7. Готовые блоки на карточке. msReviewsHub (весь раздел одним вызовом), msReviewsTabbed (вкладки), msReviewsFilters, msReviewPrompt, msReviewMediaGallery. На боевом сайте выберите один вариант списка — см. страницу товара.
  8. Главная и категории. msReviewsLatest, msTopRatedProducts, msQuestionsLatest. Примеры — каталог и главная.
  9. Модерация. Статусы, массовые действия, закреп, ответ магазина на отзыв и в блоке вопросов, журнал. Импорт и экспорт CSV. Подробнее — админка.
  10. Фото в отзывах. Загрузка с лимитами, превью в списке, вкладка «Медиа» в админке. Ссылки на YouTube/Vimeo в тексте (настройка).
  11. Защита от спама. Скрытые поля, лимит отправок, чёрные списки. По желанию — блок ботов (CrawlerDetect) и капча. См. настройки антиспама.
  12. Schema.org. Сниппет msReviewSchema — товар, средний рейтинг, отзывы. По желанию — блок вопросов и ответов в разметке.
  13. Админка Vue. Дашборд, отзывы, вопросы, медиа, операции (очередь писем, CSV). VueTools ≥ 1.1.2-pl, 9 прав доступа MODX — руководство и права.
  14. API для доработок. Коннектор с JSON success/message/data/errors и события msrOn* для плагинов.
  15. Внешний вид под вашу тему. Чанки Fenom, CSS-переменные --msr-*, локализация ru/en/uk через msReviewsLexiconScript.

Зависимости
  • MiniShop3 — товары, заказы, подтверждённые покупки.
  • VueTools ≥ 1.1.2-pl — админка на Vue 3 + PrimeVue 4.
  • pdoTools — по желанию, постраничный список отзывов (pdoPage).
  • CrawlerDetect — по желанию, блок ботов.

На витрине. Файл reviews.css, JavaScript type=module, сниппет msReviewsLexiconScript.

17 сниппетов. Справочник параметров: обзор сниппетов. Сборка на карточке: страница товара.

Страница товара — по частям
  • Собираете карточку сами: каждый блок — отдельный сниппет в шаблоне.
  • msReviews — список отзывов: фильтры, страницы, аватары, «полезно», правка и удаление своего отзыва.
  • msReviewForm — форма отзыва: звёзды 1–5, текст, согласие, загрузка фото, экран «Спасибо» после отправки.
  • msRatingSummary — сводка рейтинга: средняя оценка, разбивка по звёздам, счётчики подтверждённых покупок и фото.
  • msQuestions — список вопросов покупателей и ответов магазина по этому товару.
  • msQuestionForm — форма вопроса: email, текст, защита от спама, отправка на сервер msReviews.
  • msQnaBlock — вопросы и ответы одним вызовом: список и форма в одной обёртке, порядок блоков настраивается.
  • msReviewSchema — микроразметка schema.org: товар, рейтинг, отзывы. По желанию — вопросы и ответы для поисковиков.

Страница товара — готовые блоки
  • Не хотите собирать вручную — один сниппет выводит целый раздел или готовый UI.
  • msReviewsHub — весь раздел на карточке одним вызовом: сводка рейтинга, список отзывов, форма, вопросы и ответы, разметка schema.org. Есть якорные ссылки по блокам.
  • msReviewsTabbed — вкладки «Отзывы» и «Вопросы». Форму отзыва и разметку schema.org подключайте отдельно.
  • msReviewsFilters — кнопки-фильтры над списком: подтверждённые покупки, с фото, с ответом, «рекомендую», сначала полезные.
  • msReviewPrompt — призыв «Будьте первым», пока у товара нет опубликованных отзывов.
  • msRatingBadge — компактные звёзды и число отзывов в сетке каталога (не на полной карточке товара).
  • msReviewMediaGallery — галерея фото из опубликованных отзывов по этому товару.

Главная и каталог
  • msReviewsLatest — последние отзывы: на главной или в категории, по выбранным товарам или разделам каталога.
  • msTopRatedProducts — подборка товаров с лучшим рейтингом.
  • msQuestionsLatest — последние вопросы и ответы по разным товарам — для главной или блога.

Служебный
  • msReviewsLexiconScript — переводы для JavaScript на витрине. Подключайте на странице до форм отзыва и вопроса.

Три шага до первого отзыва
  1. Установите пакет вместе с MiniShop3 и VueTools. Откройте Extras → msReviews. Подробнее — быстрый старт.
  2. Задайте модерацию и антиспам в системных настройках (namespace msreviews).
  3. Подключите сниппеты на шаблон товара, рейтинг в чанк каталога, при необходимости виджеты на главную.

Требования: MODX 3.0.3+, PHP 8.2+, MiniShop3, VueTools ≥ 1.1.2-pl.

Документация

Скриншоты



































Changelog — msReviews

Формат: Keep a Changelog Версии: Semantic Versioning

[1.2.2] - 2026-08-31

Патч: письма уведомлений как HTML.

Fixed

  • Письма (модератор, invite, reply/answer notify): отправка как HTML (setHTML + Content-Type: text/html) через modPHPMailer; исправлен неверный namespace modMail, из‑за которого письмо уходило через mail() как text/plain (сырой HTML в клиенте).
  • Письмо модератору: в чанке {$type} / {$status} — локализованные подписи (отзыв / На модерации); машинные коды — {$type_key} / {$status_key}.

[1.2.1] - 2026-08-30

Патч к 1.2.0: CMP-каталог, привязка отзыва к любому ресурсу, письма модератору без silent stock-fallback.

Fixed

  • Письмо модератору: если имя чанка msreviews_moderator_email_*_chunk задано, а рендер пустой — ERROR в лог MODX, лексикон/stock не подставляется, письмо не уходит.
  • CMP: убрана колонка «Ответ магазина» из DataTable (ответ — во вкладке формы редактирования).
  • CMP: создание/редактирование отзыва допускает любой неудалённый site_content, не только msProduct. Форма и фильтр списка ищут через mgr/catalog/search с type=resource.
  • Поиск в CMP: limit 1–100 (по умолчанию 50); при вводе q options заменяются результатом, без merge со stale first-N.
  • CatalogLookupService: корректный ESCAPE '!' в LIKE (раньше в SQL уходило ESCAPE \'!\' — пустой поиск); числовой q поднимает точный id в начало списка.
  • Витрина msReviewsLatest / msQuestionsLatest: заголовок ресурса для отзывов/вопросов на любом site_content (раньше labels только для msProduct — пустая ссылка «Товар»).
  • Chip-фильтры (msReviewsFilters): без дубля msr_product_id в URL при baseQuery + $_GET.

Changed

  • Документация: msReviews vs msReviewsLatest
  • Resolver настроек: синхронизация ключей msreviews_moderator_* при upgrade.

[1.2.0] - 2026-08-28

Релиз с breaking changes для кастомизации. Порядок обновления и таблицы соответствий — docs/upgrade-1.2.md.

Added

Уведомления модератора

  • Письмо модератору о новом отзыве или вопросе с витрины: ModeratorNotificationService, MsReviewsMailDispatcher::sendModeratorAlert(), DTO ModeratorAlertDto.
  • Настройки: msreviews_moderator_notify_enabled, msreviews_moderator_notify_emails, msreviews_moderator_notify_on (pending_only | all), msreviews_moderator_email_subject_chunk, msreviews_moderator_email_body_chunk.
  • Событие msrOnModeratorNotify — плагин может отменить отправку, вернув false. Импорт CSV и создание отзыва в CMP уведомления не поднимают.

Контроль ассетов на вызов

  • Свойства &registerCss и &registerJs (по умолчанию 1) у 14 витринных сниппетов: msReviews, msReviewForm, msQuestionForm, msRatingSummary, msReviewsLatest, msTopRatedProducts, msQuestions, msReviewsHub, msReviewPrompt, msReviewsFilters, msRatingBadge, msReviewsTabbed, msReviewMediaGallery, msQuestionsLatest. Хелпер msr_parse_storefront_asset_options().

UGC-галерея под свою вёрстку

  • msReviewMediaGallery: свойства bodyTpl, mediaLinkMode (lightbox | anchor | raw), galleryGroup, thumbSize.
  • Новый чанк tplReviewMediaGalleryBody (список фото или пустое состояние), плейсхолдер link_html в item-чанке.
  • Классы StorefrontMediaGalleryRenderer, StorefrontMediaLinkBuilder, MediaGalleryRenderOptions, enum MediaLinkMode.

Рендер и документация

  • msreviews\Utils\ChunkRenderer и хелпер msr_get_chunk() — рендер чанков через pdoTools с принудительным Fenom.
  • docs/upgrade-1.2.md — руководство по обновлению; раздел «Кастомная вёрстка: data-контракт витрины» в docs/INTEGRATION.md.
  • Тесты ChunkRendererTest, ModeratorNotificationServiceTest, StorefrontMediaGalleryRendererTest.

Changed

  • Все 33 чанка пакета переписаны на Fenom. Выходные фильтры MODX (:is=`, `:notempty=`, `:default=`, `:gt=`) заменены на `{if} и ?:.
  • pdoTools 3.0+ стал обязательной зависимостью ('pdotools' => '>=3.0.0' в transport requires). Настройка pdotools_fenom_parser на пакет не влияет: рендер вызывает pdoTools напрямую с включённым Fenom. Без pdoTools витрина выводит пустые блоки и пишет ошибку в лог MODX.
  • *Фронтовый JS ищет элементы только по `data-msr-** и штатному HTML (name,type,role). BEM-классы остались оформлением. Единый контракт селекторов —js/module/PublicStorefrontContract.js; скрипты разбиты на модули (dom.js,lexicon.js,MediaLightbox.js`).
  • Состояния пишутся атрибутами, а не классами: [data-msr-star-lit] вместо .is-lit, [data-msr-message="ok"|"error"] вместо .msreviews-form__msg--ok|--err, [data-msr-form-state="success"] вместо .is-success, aria-pressed="true" вместо .is-voted, aria-selected="true" и hidden вместо .is-active у вкладок. Селекторы reviews.css обновлены.
  • Конструкторы ReviewCreationService и QuestionService принимают ModeratorNotificationService; сервисы собираются через ReviewServiceFactory::create() (новый ключ moderatorNotification).
  • msr_register_storefront_assets() принимает третий необязательный аргумент с параметрами registerCss / registerJs.
  • Документация: требование pdoTools в README.md, docs/installation.md, testing.md, _preview/DESCRIPTION.md; примеры плейсхолдеров в docs/* переведены на Fenom.

Deprecated

  • msr_storefront_media_link_html() — используйте msreviews\Storefront\StorefrontMediaLinkBuilder::html().

Removed

  • Класс ReviewRequestMailDispatcher — переименован в MsReviewsMailDispatcher (метод sendReviewInvite() сохранён с прежней сигнатурой).
  • Хелпер msr_storefront_gallery_item_html() — разметку элемента галереи задаёт &itemTpl.
  • CSS-состояния .is-lit, .is-success, .is-voted, .msreviews-tabbed__tab.is-active, .msreviews-tabbed__panel.is-active, модификаторы .msreviews-form__msg--ok и --err.

Requirements

  • PHP 8.2+, MODX Revolution 3.0.3+, MiniShop3
  • pdoTools ≥ 3.0 — чанки витрины и писем на Fenom
  • VueTools ≥ 1.1.2-pl (страница CMP в менеджере)
  • Опционально: CrawlerDetect (блок ботов)

[1.1.1] - 2026-08-26

Fixed

  • Экспорт отзывов в CSV (mgr/export/reviews): колонка is_pinned заменена на pinned (соответствует схеме БД). Ранее SQL падал и выгружался пустой файл.
  • При отсутствии отзывов CSV всё равно содержит строку заголовков — видны доступные колонки для импорта.
  • Импорт CSV: экспорт включает author_email; импорт принимает CSV экспорта без email (синтетический адрес из author_name).
  • Мастер импорта в CMP: выбор .csv-файла вместо вставки текста; шаг «Параметры» с пояснением «Пропускать дубликаты» и превью файла.

Changed

  • Мастер импорта: шаг 1 — файл, шаг 2 — параметры дубликатов, шаг 3 — подтверждение с превью колонок.

[1.1.0] - 2026-08-26

Added

  • В CMP (вкладка Отзывы) добавлены ручные действия:
    • mgr/review/create — создание отзыва из админки;
    • mgr/review/update — редактирование существующего отзыва.
  • В интерфейсе модерации добавлен диалог «Добавить/Редактировать отзыв» с полями: product_id, rating, title, text, author_name, author_email, status, is_verified.
  • Добавлен чекбокс Verified purchase для manager create/update (право review_moderate).

Changed

  • Реализован ReviewManagerWriteService для валидации msProduct, create/update, журнала модерации и событий msrOnBeforeReviewCreate, msrOnReviewCreate, msrOnBeforeReviewUpdate, msrOnReviewUpdate.
  • При смене product_id в manager update пересчитываются агрегаты для старого и нового товара.
  • Обновлены ConnectorRegistryFactory, MgrConnectorHandlers, ConnectorPermissionsMap, тесты и документация (manager-guide, api-reference, configuration, permissions, faq, AGENTS).

[1.0.0] - 2026-07-03

Первый публичный релиз msReviews для MODX Revolution 3 и MiniShop3.

Added

Отзывы и рейтинг

  • Отзывы 1–5★, статусы модерации (pending, published, rejected, spam, archived), журнал модерации.
  • Агрегат по товару: среднее арифметическое или Wilson (msreviews_aggregate_algorithm, msreviews_wilson_positive_min).
  • Подтверждённая покупка (verified) по заказу MiniShop3 и по ссылке из письма (order_token / msr_token).
  • Закрепление отзывов (pinned), сортировка на витрине: pinned → verified (опционально) → дата.
  • Ответ магазина (shop_reply), блокировка самоправки после ответа.
  • Голоса «полезно» (helpful_count, review/vote), настройка msreviews_helpful_voting_enabled.
  • Самоправка и удаление своего отзыва в окне (edit_token, review/update_own, review/delete_own).

Q&A

  • Вопросы и ответы магазина, модерация в CMP.
  • Сниппеты msQuestions, msQuestionForm, обёртка msQnaBlock (порядок формы: msreviews_qna_form_position).

Медиа и UGC

  • Загрузка фото к отзыву (media/upload), лимиты через msreviews_media_*.
  • Ссылки на видеохостинги в тексте (настройка msreviews_video_links_enabled).
  • Мета-поля отзыва: плюсы/минусы, сценарий, вариант, «рекомендую», доп. оценки.

Витрина

  • Сниппеты: msReviews, msReviewForm, msRatingSummary, msReviewsLatest, msTopRatedProducts, msReviewSchema, msReviewsLexiconScript.
  • Чанки Fenom, стили --msr-* (reviews.css), JS (reviews.js, review-form.js, question-form.js).
  • Звёздный рейтинг в форме и диалоге правки; Gravatar в списке (useGravatar).
  • Пагинация с pdoTools (offset, pdoPage, totalVar).

Письма после заказа

  • Очередь запросов отзывов, плагин msreviews_order_status (msOnChangeOrderStatus).
  • Отправка по cron: request/process с ключом msreviews_cron_key.

Антиспам

  • Honeypot, rate limit, чёрные списки (email, домены, IP, стоп-слова), лимит ссылок.
  • Опциональная блокировка ботов (msreviews_crawler_block_enabled, CrawlerDetect).
  • Событие msrOnCaptchaVerify для капчи через плагин.

JSON-LD

  • Schema.org Product + Review + AggregateRating (msReviewSchema).
  • Опционально Q&A в разметке (msreviews_schema_qna_enabled).
  • Источник рейтинга в схеме: mean или display (msreviews_schema_rating_source).

Админка (CMP)

  • Extras → msReviews: дашборд, отзывы, вопросы, медиа, операции (экспорт/импорт CSV, очередь писем).
  • Vue 3 + PrimeVue 4 через VueTools ≥ 1.1.2-pl; права MODX на действия коннектора.
  • Аналитика mgr/analytics/summary, фильтры по периоду и товарам/категориям.

API и инфраструктура

  • Коннектор assets/components/msreviews/connector.php (web + mgr).
  • 45 системных настроек msreviews_*, лексиконы ru, en, uk.
  • События msrOn* (создание и модерация отзыва, голос, Q&A, отправка письма и др.).
  • Transport-пакет MODX, resolver таблиц и настроек.

Requirements

  • PHP 8.2+
  • MODX Revolution 3.0.3+
  • MiniShop3
  • VueTools ≥ 1.1.2-pl (страница CMP в менеджере)
  • Опционально: CrawlerDetect (блок ботов), pdoTools/Fenom (витрина)

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