Skip to content
  1. Компоненты
  2. msReviews
  3. Для разработчика
  4. События MODX и капча

События MODX и капча

Примеры витрины — Интеграция. Ниже события, капча и prefetch для расширений.

События msrOn*

СобытиеКогда
msrOnBeforeReviewCreateДо создания отзыва
msrOnReviewCreateПосле создания
msrOnBeforeReviewPublishДо публикации
msrOnReviewPublishПосле публикации
msrOnReviewRejectПри отклонении
msrOnBeforeReviewUpdate / msrOnReviewUpdateСамоправка
msrOnBeforeReviewDelete / msrOnReviewDeleteСамоудаление
msrOnReviewVoteПосле «полезно»
msrOnQuestionCreateСоздание вопроса
msrOnAnswerCreateОтвет из CMP
msrOnReviewRequestSendОтправка письма из очереди
msrOnCaptchaVerifyПеред review/create и question/create

Верните false из плагина на guard-событиях, чтобы заблокировать операцию (msr_err_event_block).

Капча (msrOnCaptchaVerify)

Встроенного виджета нет.

  1. Подключите провайдера капчи на сайте.
  2. Передайте HTML в &captchaHtml= у msReviewForm / msQuestionForm.
  3. Создайте плагин на msrOnCaptchaVerify (ранняя сортировка).
  4. Проверьте токен через API провайдера.
  5. При неуспехе установите результат события в false → JSON msr_err_captcha.
modx
[[!msReviewForm?
  &product_id=`[[*id]]`
  &captchaHtml=`[[+captchaHtml]]`
]]
fenom
{'!msReviewForm' | snippet : [
  'product_id' => $_modx->resource.id,
  'captchaHtml' => $captchaBlock
]}

Prefetch агрегатов

Функция msr_prefetch_aggregates(\MODX\Revolution\modX $modx, array $productIds) в core/components/msreviews/include/helpers.php.

Вызывайте в PHP до цикла карточек каталога, когда id товаров уже известны:

php
require_once MODX_CORE_PATH . 'components/msreviews/include/helpers.php';
msr_prefetch_aggregates($modx, [101, 102, 103]);

После prefetch msRatingSummary и msRatingBadge читают агрегат из request-scoped кеша без N+1 запросов.

Коды msr_err_*

КлючКонтекст
msr_err_productНеверный product_id
msr_err_ratingОценка не 1–5
msr_err_spamHoneypot / blacklist
msr_err_crawlerCrawlerDetect
msr_err_rateRate limit
msr_err_captchaКапча не пройдена
msr_err_tokenНеверный edit_token
msr_err_self_edit_disabledСамоправка выключена
msr_err_vote_disabledГолосование выключено
msr_err_forbiddenНет прав mgr
msr_err_unknown_actionНеизвестный action

Полный список — лексикон namespace msreviews, ключи msr_err_*. На витрине JS переводит через window.msrLexicon.

CrawlerDetect

Ru: CrawlerDetect + msreviews_crawler_block_enabled=1: блок review/create и question/create для ботов → msr_err_crawler.

Resource cache и фильтры

Плагин msReviews Storefront cache (msreviews_storefront_cache) поставляется с пакетом и включён по умолчанию.

События: OnHandleRequest, OnLoadWebPageCache, OnBeforeSaveWebPageCache, OnWebPagePrerender.

Зачем: при cache_resource=1 MODX кэширует HTML карточки товара без query ?msr_verified=1 и других фильтров. Плагин сбрасывает resource cache при запросе с msr_*, не сохраняет отфильтрованный HTML в кэш и обходит HTML-кэш imageoptimizer, если он установлен.

Без плагина chip-фильтры msReviewsFilters на проде могут не менять список. Подробнее: Интеграция — фильтры.

См. также