Плагины

Отзывы на сайте для приложения «Заявки»

5★ (1)< 10 установок

Отзыв здесь — это заявка отдельной формы, поэтому ему бесплатно достаётся всё, что приложение уже умеет: конструктор полей, защита от спама, капча, вложения и уведомления. Плагин добавляет то, чего у заявки нет: оценку, модерацию, ответ магазина и ленту на витрине.

2 999 ₽
Не знаете с чего начать? Оставьте заявку — мы проконсультируем по выбору решения, поможем с установкой и настройкой.

Описание

Отзывы покупателей на сайте: оценки, модерация и ответы магазина

Отзыв здесь — это заявка отдельной формы, поэтому ему бесплатно достаётся всё, что приложение уже умеет: конструктор полей, защита от спама, капча, вложения и уведомления. Плагин добавляет то, чего у заявки нет: оценку, модерацию, ответ магазина и ленту на витрине.

Лента отзывов на витрине

Оценка и средний балл

Поле «Оценка» со звёздами, средний балл и число отзывов над лентой. Пять сортировок: по дате (в обе стороны), по отметкам «Полезно» и по оценке (в обе стороны).

Модерация перед публикацией

На витрину попадают только опубликованные отзывы. Отклонённый исчезает из ленты, но остаётся в приложении.

Ответ магазина

Ответ пишется прямо в карточке отзыва и показывается под ним на витрине. Автору уходит письмо о публикации и об ответе.

При редактировании сохранённый текст возвращается в поле, а кнопка «Сохранить ответ» неактивна, пока его не изменят — повторных писем не бывает. К ответу можно приложить файлы (сертификат, фото замены) — они показываются на витрине вместе с ответом. Отзывы с ответом помечены зелёным бэджем «Ответ» прямо в списке заявок.

Звёзды в поиске

Микроразметка Schema.org (Review и AggregateRating) — Яндекс и Google показывают рейтинг прямо в выдаче.

Отзывы привязаны к форме, поэтому лент может быть сколько угодно: «Отзывы о магазине», «Отзывы о доставке», «Отзывы о сервисном центре». Каждая — своя форма со своими полями и настройками.

Что ещё видно в ленте

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

  • Гистограмма оценок — распределение от пяти звёзд к одной, в каждой строке доля и число отзывов. Клик по строке оставляет в ленте только отзывы с этой оценкой.
  • Аватар из инициалов — у имени автора кружок с первыми буквами. Загружать ничего не нужно, и лента не разъезжается из-за того, что у кого-то нет фотографии.
  • Метка «Проверенная покупка» — отзыв от человека, у которого есть заказы в магазине. Метка работает только при установленном Shop-Script: плагин сверяет заказы по контакту автора, и на сайте без магазина её просто не будет — остальная лента при этом работает как обычно.

Модерация в карточке отзыва

Состояние, оценка, число отметок «Полезно» и поле ответа — всё в одном месте, рядом с самим отзывом.

Модерация отзыва в карточке заявки

Живая лента и плавное окно просмотра фото

Карточки отзывов проявляются при прокрутке, кнопка «Полезно» откликается на клик, а фотографии открываются в окне с плавным появлением, аккуратной сменой кадра по стрелкам и свайпом на телефоне — всё это делает сам плагин, без единой строчки в теме. Анимации уважают системную настройку «Уменьшить анимацию» браузера и отключаются целиком одним переключателем в форме, если владельцу сайта они не нужны.

Вывод ленты в теме дизайна — с помощью хелпера

Лента выводится одной строкой в любом месте шаблона или прямо в содержимом страницы — число в скобках это номер формы с отзывами. Проверка {if !empty(...)} ничего не ломает, даже если плагин когда-нибудь выключат или удалят: вызов на несуществующем плагине просто вернёт пустую строку, а не уронит страницу.

{if !empty($wa->requests->sitereviewsPlugin->version())}
    {$wa->requests->sitereviewsPlugin->render(3)}
{/if}

{* пять последних, плитками в несколько колонок *}
{$wa->requests->sitereviewsPlugin->render(3, ['limit' => 5, 'layout' => 'cards'])}

{* только средний балл, например в шапке страницы *}
{$wa->requests->sitereviewsPlugin->summary(3)}

Так вызов работает в любой теме — и в витрине магазина, и на страницах сайта: приложение поднимается само, а хелпер находится по тому же принципу, что и хелперы других наших плагинов. Стили и скрипт подключаются автоматически и только один раз, даже если лент на странице несколько.

Если в теме уже стоит прежняя запись {$wa->requests->plugin('sitereviews', 'render', 3)} — она продолжает работать, переписывать её не обязательно. Для новых вставок удобнее хелпер выше: у него есть проверка version() и все методы из примеров ниже.

Много отзывов — постраничный вывод

685 отзывов на одной странице — это долгая загрузка и для посетителя, и для поисковика. Опция paging у render() разбивает ленту на страницы тремя способами — вычисления и запросы плагин берёт на себя, в теме их считать не нужно.

{* Нумерованная навигация: 1 2 3 … 35 *}
{$wa->requests->sitereviewsPlugin->render(3, ['per_page' => 20, 'paging' => 'pages'])}

{* Кнопка «Показать ещё» — обычная ссылка ?page=N+1,
   рабочая и без JavaScript *}
{$wa->requests->sitereviewsPlugin->render(3, ['per_page' => 20, 'paging' => 'more'])}

{* То же самое, но следующая страница подгружается
   сама при прокрутке к кнопке *}
{$wa->requests->sitereviewsPlugin->render(3, ['per_page' => 20, 'paging' => 'scroll'])}

Без опции paging лента работает как и раньше — короткий список без навигации, для тех случаев, где это и нужно (например, три последних отзыва на главной странице).

Меню «Показать» и «Сортировка»

Опция filters добавляет над лентой одну кнопку-меню вместо ряда чипсов: подпись показывает текущий выбор — «Все отзывы · Сначала новые», при активном фильтре — «С фото · Сначала высокие». Клик раскрывает список из двух групп: «Показать» (Все отзывы; С фото; С ответом магазина; Положительные 4–5; Отрицательные 1–2; и оценки «5★»…«1★» отдельно — с числом отзывов по каждому пункту) и «Сортировка» (пять значений). Выбор в одной группе не сбрасывает выбор в другой — сменили сортировку, фильтр остался, и наоборот. По каждой оценке отдельно фильтрует и клик по строке гистограммы в шапке — она сочетается с уже выбранными «С фото»/«С ответом», а не заменяет их, в отличие от пункта меню. Меню можно включить и без правки шаблона — настройкой формы на вкладке «Отзывы».

{$wa->requests->sitereviewsPlugin->render(3, ['per_page' => 20, 'paging' => 'more', 'filters' => true])}

Меню — нативные <details>/<summary>: открывается кликом без единой строки JavaScript, пункты — обычные ссылки вида ?with_photos=1, поэтому меню работает и без скрипта, и его видит поисковик. Со скриптом клик закрывает меню, подгружает страницу без перезагрузки, обновляет подпись кнопки и поддерживает стрелки ↑/↓ и Escape. На узком экране меню становится нижним листом на весь экран. Комбинация без единого совпадения показывает «Нет отзывов с такими условиями» и ссылку «Сбросить фильтры» вместо пустоты.

Своя вёрстка — те же фильтры опциями items()/paging(), например «только отзывы с фото, лучшие сначала»:

{foreach $wa->requests->sitereviewsPlugin->items(3, ['with_photos' => true, 'sort' => 'rating_desc']) as $review}
  {$review.author} — {$review.rating} из 5
  {$review.text}
{/foreach}

{* только оценка 5, только с ответом магазина *}
{$wa->requests->sitereviewsPlugin->render(3, ['rating' => 5, 'with_answer' => true])}

Нужна своя вёрстка — возьмите данные

Если стандартный блок не вписывается в макет, плагин отдаст готовые массивы, а разметку напишете сами — например, чтобы показать три отзыва на главной странице.

{assign var=reviews value=$wa->requests->sitereviewsPlugin->items(3, ['limit' => 3])}
{foreach $reviews as $review}
  {$review.author} — {$review.rating} из 5
  {$review.text}
{/foreach}

{* текст отзыва может лежать в нескольких полях формы —
   «Достоинства», «Недостатки», «Комментарий»; $review.text — все они
   одной строкой (как в примере выше), $review.text_parts — те же
   части по отдельности, с подписью поля *}
{foreach $review.text_parts as $part}
  {$part.label}: {$part.text}
{/foreach}

{assign var=stats value=$wa->requests->sitereviewsPlugin->stats(3)}
{$stats.average_human} из 5, отзывов: {$stats.count}

{* items() тоже принимает постраничный вывод — page и per_page.
   paging() отдаёт номера страниц отдельно, без повторного
   вывода отзывов — удобно поверх собственной вёрстки *}
{assign var=reviews value=$wa->requests->sitereviewsPlugin->items(3, ['page' => 2, 'per_page' => 20])}
{assign var=paging value=$wa->requests->sitereviewsPlugin->paging(3, ['page' => 2, 'per_page' => 20])}
Страница {$paging.page} из {$paging.pages}

В отзыве уже подготовлены инициалы для аватара, человеческая дата, признак покупателя, число отметок «полезно», ответ магазина и ссылки на фотографии. В сводке — средний балл и распределение оценок по звёздам для гистограммы.

Фото отзыва открывается в окне и в своей вёрстке

Просмотр фотографий в окне — часть плагина, а не стандартного блока: подключите стили и скрипт методом assets() и оставьте на ссылке класс requests-reviews__file — дальше плагин всё делает сам, свой JavaScript в теме не нужен. Без JS ссылка ведёт прямо на файл.

{$wa->requests->sitereviewsPlugin->assets()}

{foreach $wa->requests->sitereviewsPlugin->items(3, ['limit' => 6]) as $review}
  <div class="my-review" data-requests-reviews-gallery>
    {$review.author} — {$review.rating} из 5
    {$review.text}
    {foreach $review.files as $file}
      <a class="requests-reviews__file" href="{$file.url|escape}">
        <img src="{$file.url|escape}" alt="{$file.name|escape}" loading="lazy">
      </a>
    {/foreach}
  </div>
{/foreach}

Атрибут data-requests-reviews-gallery на обёртке одного отзыва — чтобы стрелки «предыдущая / следующая» листали фото именно этого отзыва, а не всех фото на странице разом. Без обёртки окно всё равно открывается, просто без стрелок.

Вывод можно переписать под свою тему

Стандартный шаблон лежит в плагине, но тема важнее: положите в её корень файл sitereviews_plugin.reviews.html — и ленту отзывов (шапку со сводкой и список) будет рисовать он. Внутри обычный Smarty и подготовленные переменные, список которых есть в шапке исходного шаблона.

Разметка одного отзыва вынесена отдельно — файл sitereviews_plugin.reviews_items.html. Переопределите его, если нужна только своя карточка отзыва: тот же файл используется и для страницы, дозагружаемой кнопкой «Показать ещё», поэтому новые отзывы получат ту же карточку, без лишней правки.

Откат — просто удалите файл из темы: плагин снова возьмёт свой шаблон. Обновление плагина вашу вёрстку не затирает, потому что она лежит в теме, а не в его файлах.

Настройки формы отзывов

  • Публиковать сразу, без модерации — на публичном сайте лучше держать выключенным
  • Писать автору о публикации отзыва и Писать автору об ответе магазина — два отдельных письма на email из поля с ролью «Email»; тема и текст каждого появляются, когда письмо включено
  • Тема и текст писем — о публикации отзыва и об ответе магазина, со своими словами для каждой формы. В тексте работают переменные: {$name}, {$review_text}, {$rating}, {$review_url}, {$form_name}, {$request_id}, {$field.имя_поля}, в письме об ответе ещё {$answer}. Пустое поле — стандартный текст
  • Адрес страницы с отзывами — из него собирается {$review_url}: ссылка в письме ведёт прямо на отзыв
  • Как показывать ленту — карточки в столбик, плитки в несколько колонок или простой список с разделителями
  • Поле с фотографиями — какое поле формы показывать галереей в ленте; не выбрано — берётся первое поле с файлами
  • Кнопка «Полезно» — посетители отмечают полезные отзывы, по ним идёт сортировка
  • Микроразметка Schema.org — звёзды в выдаче поисковиков
  • Анимации ленты и окна просмотра фото — включены по умолчанию, отключаются одной галочкой
  • Панель фильтров и сортировки — меню «Показать» и «Сортировка» над лентой: фильтр по фото, ответу магазина, оценке и сортировка одним выпадающим списком, работает без JavaScript; выключено по умолчанию
Настройки отзывов в форме

Отзывы в личном кабинете покупателя

Раздел «Мои отзывы» — покупатель видит все свои отзывы: опубликованные, на проверке и (по настройке) отклонённые нейтральным «Не опубликован», с ответом магазина и фотографиями, — и может оставить новый через всплывающую форму, без перехода на отдельную страницу. «Свои» — все отзывы с привязкой к контакту покупателя, включая перенесённые и подобранные по email или телефону в редакторе заявки, а не только оставленные лично на этой витрине.

Раздел выключен по умолчанию — без поддержки темы ссылка вела бы в никуда. Включается на общей странице настроек плагина:

  • Раздел «Мои отзывы» — общий переключатель
  • Название пункта меню и заголовок страницы
  • Адрес страницы — пусто — стандартный личный кабинет Shop-Script, свой — страница сайта со своей вёрсткой
  • Форма для кнопки «Оставить отзыв» — список форм в режиме «Отзыв»; без выбора кнопки не будет
  • Показывать отклонённые отзывы — включено по умолчанию

Seller 2 — из коробки, другая тема — фрагментом кода

В теме Seller 2 раздел работает сразу после включения настройки: пункт «Мои отзывы» появляется в меню личного кабинета, страница — по адресу /my/profile/?view=reviews.

Для любой другой темы дизайна нужен один вызов на странице личного кабинета покупателя — тем же способом, каким выводится лента:

{if !empty($wa->requests->sitereviewsPlugin->version())}
    {$wa->requests->sitereviewsPlugin->myReviews()}
{/if}

Пункт меню в тему добавляется автоматически, если она поддерживает стандартное событие Webasyst frontend_my_nav (как темы Shop-Script по умолчанию). Гость, открывший страницу, увидит не пустоту, а приглашение войти со ссылкой на вход.

Своя вёрстка страницы «Мои отзывы»

Как и у ленты — готовые массивы вместо готового HTML, а также адрес и число отзывов для своей плитки или пункта меню:

{assign var=reviews value=$wa->requests->sitereviewsPlugin->myItems(['limit' => 10])}
{foreach $reviews as $review}
  {$review.form_name}: {$review.author} — {$review.state_label}
  {$review.text}
{/foreach}

{* адрес страницы и число отзывов — для своей плитки на главной ЛК *}
{$wa->requests->sitereviewsPlugin->myUrl()}
{$wa->requests->sitereviewsPlugin->myCount()}

state_label — «Опубликован», «На проверке» или «Не опубликован»: формулировка для покупателя, а не служебные термины модерации из карточки заявки. У опубликованного отзыва в стандартной странице плашки нет вовсе — только у тех, что ещё проверяются или не прошли проверку.

Переопределение под свою тему

Как и вывод ленты — файлом в корне активной темы. sitereviews_plugin.my_reviews.html переопределяет страницу целиком, sitereviews_plugin.my_nav.html — только пункт меню (обычная ссылка, без обёртки списка — подставляется в готовую разметку темы).

Отзывы через ИИ-агента

Если на сайте стоит приложение MCP, плагин добавляет в него три инструмента — с ними Claude, Cursor или свой скрипт ведут модерацию так же, как вы в карточке заявки:

  • requests_sitereviews_list_reviews — отзывы формы с фильтром по состоянию модерации и оценке, постранично, со средним баллом по выборке
  • requests_sitereviews_set_state — опубликовать, отклонить или вернуть на модерацию до сотни отзывов за вызов: удобно, когда отзывы перенесли с другой площадки пачкой
  • requests_sitereviews_answer — записать или переписать ответ магазина; письмо автору уходит, только если агента явно попросили его отправить

Чтение и запись выдаются токену MCP отдельными правами. Без приложения MCP плагин работает как обычно — инструменты просто не появляются.

Мы в социальных сетях

Узнавайте первыми о наших новых решениях и акциях.

С этим часто берут

Похожие решения

Бонусные баллы для приложения «Заявки»

Бонусные баллы для приложения «Заявки»

Магазины держат бонусную программу, но начислять баллы за обращение с сайта приходится руками. Плагин начисляет бонусные баллы Shop-Script автоматически: когда заявка переходит в выбранные статусы и когда публикуется отзыв. Покупатель получает письмо, баллы — на его балансе, а журнал проводок — прямо в карточке заявки.

799 ₽
< 10
Квиз-формы для приложения «Заявки»

Квиз-формы для приложения «Заявки»

Длинная форма отпугивает: посетитель видит десять полей сразу и закрывает страницу. Квиз разбивает те же поля на шаги — с прогрессом и понятным финалом. Заявка приходит та же, но доходит до конца заметно больше людей.

2 999 ₽
< 10
Заявки в Битрикс24 для приложения «Заявки»

Заявки в Битрикс24 для приложения «Заявки»

Обращения приходят в приложение «Заявки», а отдел продаж работает в Битрикс24. Плагин передаёт заявку на портал сам: с телефоном, email, текстом всех полей, ссылками на файлы и товарами из корзины магазина, на нужную стадию и нужному ответственному.

1 999 ₽
< 10
Заявки в amoCRM для приложения «Заявки»

Заявки в amoCRM для приложения «Заявки»

Обращения приходят в приложение «Заявки», а отдел продаж работает в amoCRM или Kommo. Плагин передаёт заявку с контактом, текстом всех полей и ссылками на файлы, в нужную воронку и нужному ответственному.

1 999 ₽
< 10
Заявки в RetailCRM для приложения «Заявки»

Заявки в RetailCRM для приложения «Заявки»

Обращения приходят в приложение «Заявки», а отдел продаж работает в RetailCRM. Плагин передаёт заявку в CRM сам: с телефоном, email, текстом всех полей, ссылками на файлы и товарами из корзины магазина, в нужный магазин, с нужным типом, способом оформления, статусом и менеджером.

1 999 ₽
< 10
Заказы из заявок для приложения «Заявки»

Заказы из заявок для приложения «Заявки»

Покупатель набрал корзину, но вместо оформления написал в форму «Заказать звонок» или «Уточнить наличие». Обычно на этом корзина теряется: менеджер видит только имя и телефон. Плагин сохраняет содержимое корзины прямо в заявку. Заказ в Shop-Script создаётся кнопкой или автоматически — на контакте клиента.

999 ₽
5.0 (1)< 10
Сделки из заявок для приложения «Заявки»

Сделки из заявок для приложения «Заявки»

Обращение приходит в приложение «Заявки», а работа с клиентом идёт в CRM. Обычно менеджер переносит заявку в сделку руками: копирует имя, телефон, текст — и часть обращений теряется по дороге. Плагин заводит сделку сам: с контактом клиента, суммой и текстом заявки в ленте.

999 ₽
< 10
Тикеты из заявок для приложения «Заявки»

Тикеты из заявок для приложения «Заявки»

Форма «Вопрос по заказу» или «Сообщить о проблеме» собирает обращения в приложение «Заявки», а отвечает на них служба поддержки — в другом приложении. Плагин соединяет одно с другим. Тикет создаётся на контакте клиента, с текстом обращения и в нужном воркфлоу.

999 ₽
< 10