Лидер года
Хит
Битрикс модуль «TS Умные отзывы о магазине и о товаре»

TS Умные отзывы о магазине и о товаре

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

Основные возможности

  • В комплекте один комплексный компонент Отзывы, который включает в себя 4-е простых:
    Форма добавления отзыва, Список отзывов, Статистика по отзывам, Сортировка отзывов
  • Возможность выбора премодерации (Без модерации, Все, Анонимные);
  • Встроенные темы 6 шт. (Оранжевая, Черная, Синяя, Красная, Ярко-голубая, Розовая);
  • Возможностьпривязать отзывы к товару, разделу, странице, инфоблоку, заказу по умолчанию без привязки;
    * - Чтобы "Отзывы о товаре" работали в кэше компонентов вам поможет дополнительный модуль Некэшируемая область
  • Возможность выбора только необходимых полей для заполнения, все доступные:
    Заголовок, Достоинства, Недостатки, Комментарий, Населенный пункт * , Доставка *, E-mail гостя, Телефон гостя
    * - поля доступны только в редакциях с модулем Интернет-магазин, это редакции Битрикс: Малый Бизнес и выше..
  • Возможность задать обязательные для заполнения поля;
  • Возможность сортировать отзывы по заданным полям;
  • Возможность включить "Замену URL-адресов на ссылки" в полях отзыва и в ответе при выводе списка;
  • Возможность выбора всех доставок или только определенных;
  • Возможность добавить ссылку на страницу с правилами публикации отзывов;
  • Возможность изменять служебные сообщения выводимые покупателю;
  • Возможность отключать все встроенные стили компонентов и применять свои;
  • Возможность подключить встроенный в Битрикс jQuery;
  • Возможность дать официальный ответ на отзыв;
  • Возможность отправлять уведомление об ответе на отзыв;
  • Встроена наша фирменная скрытая защита от спама без ввода капчи;
  • И многое другое..

События ORM

Т.к. модуль написан на D7 + ORM, вы можете использовать события ORM и встроенные в модуль события.
Пользовательские обработчики события можно размещать в этом файле:
/bitrix/php_interface/init.php

Пример пользовательского класса обработчиков событий:
<?php
use \Bitrix\Main\EventManager;
use \Bitrix\Main\Entity;

$eventManager = EventManager::getInstance();

//==============================================================================
// api.reviews events
//==============================================================================
$eventManager->addEventHandler('api.reviews', 'ReviewsOnBeforeAdd', array('MyReviewsEvents', 'OnBeforeAdd'));
//$eventManager->addEventHandler('api.reviews', 'ReviewsOnBeforeDelete', array('MyReviewsEvents', 'OnBeforeDelete'));
//$eventManager->addEventHandler('api.reviews', 'onAfterReviewAdd', array('MyReviewsEvents', 'onAfterReviewAdd'));
//$eventManager->addEventHandler('api.reviews', 'onAfterReviewAddEventSend', array('MyReviewsEvents', 'onAfterReviewAddEventSend'));

class MyReviewsEvents
{

    //---------- ORM события ----------//

    //При добавлении записи порядок событий следующий
    public static function OnBeforeAdd(\Bitrix\Main\Event $event)
    {
        //Вернет все параметры события $event в виде ассоциативного массива
        //$params = $event->getParameters();

        //Пример дампа любых данных в файл, для отладки кода
        $tttfile = dirname(__FILE__) . '/1_OnBeforeAdd.php';
        file_put_contents($tttfile, "<pre>" . print_r($event->getParameter('fields'), 1) . "</pre>\n");
    }

    public static function OnAdd(){}
    public static function OnAfterAdd(){}

    //При обновлении записи порядок событий следующий
    public static function OnBeforeUpdate(){}
    public static function OnUpdate(){}
    public static function OnAfterUpdate(){}

    //При удалении записи порядок событий следующий
    public static function OnBeforeDelete(){}
    public static function OnDelete(){}
    public static function OnAfterDelete(){}


    //---------- Встроенные события ----------//

    public static function onAfterReviewAdd($id, &$arFields, $arParams){}
    public static function onAfterReviewAddEventSend($id, &$arFields, $arParams){}
}
?>
Все ненужные события можете удалить из класса, первый метод представлен как пример получения данных события и дампа в файл для отладки кода.

Также можете запустить обработчик события как функцию, без класса, пример:
$eventManager->addEventHandler('api.reviews', 'ReviewsOnBeforeAdd', 'ReviewsOnBeforeAddHandler');
function ReviewsOnBeforeAddHandler(\Bitrix\Main\Event $event)
{
  //Вернет все параметры события $event в виде ассоциативного массива
  //$params = $event->getParameters();

  //Пример дампа любых данных в файл, для отладки кода
  $tttfile = dirname(__FILE__) . '/1_OnBeforeAdd.php';
  file_put_contents($tttfile, "<pre>" . print_r($event->getParameter('fields'), 1) . "</pre>\n");
}
В модуле есть и встроенные события, пока их два.
onAfterReviewAdd - После добавления отзыва запишет в базу Адрес страницы с ЧПУ отзыва и Заголовок страницы
onAfterReviewAddEventSend - После добавления отзыва но перед отправкой письма о новом отзыве дает возможность изменить данные.

API

CApiReviews::getElementRating($ELEMENT_ID, $IBLOCK_ID = false) - метод вернет суммарный рейтинг и количество отзывов для товара/элемента в виде массива
Array
(
    [RATING] => 3
    [COUNT] => 2
)

Пример получения суммарного рейтинга в виде массива для товара/элемента
<?
//на странице, где получаете рейтинг, обязательно подключение модуля один раз где-то выше по коду, не в цикле.
if(CModule::IncludeModule('api.reviews'))
{
    //10394 - ID элемента или товара
    //26     - ID инфоблока (если задано при добавлении отзыва, иначе не обязательно)
    $arRaing = CApiReviews::getElementRating(10394,26);
    echo "<pre>"; print_r($arRaing);echo "</pre>";
}
?>


CApiReviews::getElementRatingHtml($ELEMENT_ID, $IBLOCK_ID = false, $bIncCss = true, $theme = '') - метод вернет суммарный рейтинг для товара/элемента в виде готового html с применением стилей
$bIncCss - по умолчанию подключит inline-css, но вы можете это отключить передав false, вывести только html и применить свои стили к рейтингу.

Пример вывода суммарного рейтинга в html-виде для товара/элемента
<?=CApiReviews::getElementRatingHtml(10394);?>
#


CApiReviews::getRatingHtml($rating, $bIncCss = true, $theme = '') - метод только преобразует рейтинг для одного элемента в html с применением стилей (метод не делает запросы к БД, в отличие от предыдущих, только преобразует число в html).
$rating - рейтинг от 1 до 5 полученный у товара/элемента, подойдет, например, для вывода списка последних отзывов.
$bIncCss - по умолчанию подключит inline-css, но вы можете это отключить передав false, вывести только html и применить свои стили к рейтингу.
$theme - соответствующая тема (orange, black, blue, bright-blue)

Пример вывода такого рейтинга в html-виде
<?=CApiReviews::getRatingHtml(3);?>
#

Мультиязычность Битрикс

Это первый модуль, в котором я реализовал максимально гибкую поддержку многоязычности.
Все лэнги для компонентов берутся из шаблонов и параметров, т.е. даже при копировании шаблона компонента все лэнги для компонента будут браться из скопированного шаблона, все тексты, все сообщения и т.д.
Т.е. для каждого языка сайта вы можете в шаблонах компонента все тексты изменять и для компонента, и для шаблона.

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

Если вам необходимо сделать многоязычную версию модуля:

  1. Все лэнги из настроек компонента надо убрать, оставить пустыми;
  2. Скопировать шаблон компонента;
  3. Задать для каждого языка свои лэнги.
Наглядно лэнги задаются здесь, для каждого языка отдельный файл в системе:

Лэнги шаблона и компонента

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

jQuery плагины

Для каждого шаблона компонента (кроме комплексного) написаны соответствующие названию компонента jquery плагины:
$.fn.apiReviewsList();
$.fn.apiReviewsForm();
$.fn.apiReviewsStat();
Они подключаются автоматически в шаблонах компонентов в файле script.js
При копировании шаблона компонента вы максимально все сможете изменять под свои задачи.

Почтовые уведомления

Администратору магазина на e-mail из настроек главного модуля или на e-mail из настроек сайта (в случае многосайтовости) будет отправлено уведомление о новом отзыве.
При ответе на отзыв есть возможность отправить/не отправлять уведомление на почту.
Все почтовые уведомления отправляются мгновенно методом CEvent::SendImmediate();

При установке модуля в систему установится один почтовый шаблон:

  • Тип почтового события: [API_REVIEWS] [API] Отзывы о магазине +
  • Тема: Отзыв о магазине #SITE_NAME#
Все доступные в нем макросы:
#HEADER#
#BODY#
#FOOTER#
Пока используется один макрос #BODY#, остальные задействуем позже, текст сообщения для этого макроса задается в лэнгах шаблонов компонентов:
  • api:reviews.form - при добавлении отзыва
  • api:reviews.list    - при ответе на отзыв

Системные требования

Битрикс отзывы я постарался сделать максимально совместимым со старыми редакциями, протестирован на редакциях:

  • 1С-Битрикс: Управление сайтом 11.5.7.
  • 1С-Битрикс: Управление сайтом 15.5.10.

Версия jQuery 1.8.3 + (либо на сайте, либо в настройках модуля включить)
Версия php 5.3 +

Обратите внимание!

1) Управление отзывами пока работает только в публичной части
2) Отзывы о товаре, о разделе и даже о странице также предусмотрены, но по умолчанию отзывы добавляются без привязки к чему-либо.
3) Чтобы "Отзывы о товаре" работали в кэшируемых шаблонах template.php, дополнительно необходим модуль Некэшируемая область

1) Не работают кнопки управления отзывами, не выводится форма добавления отзыва и т.д.

Попробуйте в настройках компонента подключить jQuery, если опять не заработали:

  • Есть какой-то конфликт с jQuery
    Появились JS-ошибки, увидеть их можно в панели разработчика вашего браузера по клавише F12 на вкладке Консоль (console), вам необходимо их исправить, если выводится ошибка плагина в модуле, 100% смотрите либо несколько подключенных jQuery, либо неправильный порядок подключения jQuery (см. ниже)

  • Неправильно подключена в шаблоне сайта jQuery, скрипты модуля выводятся выше.
    Библиотека jQuery должна подключаться и выводиться в шаблоне сайта самой первой и только одна, а потом все остальные скрипты. Как правильно подключить в шаблоне сайта jQuery и скрипты читайте здесь Правильный header.php в Битрикс

p.s. Не надо JS-ошибки искать в модуле, их там нет, ошибки надо искать и исправлять вашим разработчикам в шаблоне сайта, я никакие изменения на ваших сайтах не делаю.
2) Отзывы не работают в шаблоне детального описания товара

Отзывы - это динамическая область (список элементов), в шаблоне любого компонента она будет один раз закэширована в файл и далее отдаваться всем пользователям файл кэша, в этом случае отзывы работать не будут.

К шаблону компонента относятся два файла template.php и result_modifier.php, они всегда будут кэшироваться, если на сайте включено кэширование.

Чтобы отзывы работали мимо кэша в детальном описании товара, есть несколько вариантов:

  • Размещать отзывы в файле component_epilog.php шаблона компонента.
  • Размещать отзывы в файле element.php шаблона комплексного компонента.
  • Воспользоваться модулем Некэшируемая область, он позволяет выводить любую динамическую область даже в кэшируемых шаблонах.
3) Появились SQL-ошибки после перехода на версию 3.0

В админке перейдите в Настройки - Инструменты - SQL запрос, вставьте запросы в это поле и нажмите зеленую кнопку Выполнить запрос.
После успешного выполнения запроса выводится зеленое сообщение, значит все получилось, с отзывами можно работать.

ALTER TABLE `api_reviews` ADD `COMPANY` VARCHAR(255) NOT NULL AFTER `TITLE`;
ALTER TABLE `api_reviews` ADD `WEBSITE` VARCHAR(255) NOT NULL AFTER `COMPANY`;
ALTER TABLE `api_reviews` ADD `SUBSCRIBE_SEND` CHAR(1) NOT NULL DEFAULT 'N' AFTER `REPLY_SEND`;
ALTER TABLE `api_reviews` CHANGE `CITY` `CITY` varchar(255) NOT NULL AFTER `SECTION_ID`;
ALTER TABLE `api_reviews` DROP COLUMN `PUBLISH`;
ALTER TABLE `api_reviews` ADD INDEX `IBLOCK_ID` (`IBLOCK_ID`);
ALTER TABLE `api_reviews` ADD INDEX `SECTION_ID` (`SECTION_ID`);
ALTER TABLE `api_reviews` ADD INDEX `ELEMENT_ID` (`ELEMENT_ID`);
ALTER TABLE `api_reviews` ADD INDEX `USER_ID` (`USER_ID`);
ALTER TABLE `api_reviews` ADD INDEX `ORDER_ID` (`ORDER_ID`);

Установка модуля обычная, вы можете:

  1. Установить демо-версию модуля на свой сайт по кнопке Тестировать (N) дней введя в всплывающем окне адрес своего сайта, пример: https://tuning-soft.ru

  2. Купить модуль, активировать и загрузить на сайт по инструкции из раздела Помощь
    Как купить Битрикс модуль?
    Как активировать Битрикс модуль?

Краткая инструкция для опытных

1) После установки модуля перейдите в публичную часть сайта
2) Создайте на сайте раздел или страницу с помощью панели администрирования;
3) В визуальном редакторе в панели компонентов справа найдите раздел Тюнинг-Софт –> Отзывы о магазине +;
4) Перетащите мышкой значок компонента в область визуального редактора
5) Если настройки не открылись автоматически, надо кликнуть дважды по значку
6) В появившемся окне параметров компонента необходимо настроить компонент или оставить все как есть с настройками по умолчанию
7) Сохраните настройки компонента
8) Сохраните страницу

Все, отзывы о магазине/товаре/разделе/странице должны работать.
Обладая знаниями разработчика вы можете размещать компонент в любом месте сайта, если нет таких знаний, пишите мне.

Базовая настройка модуля после установки

Итак, делаем все, как в краткой инструкции, только наглядно со скриншотами

1) После установки модуля перейдите в публичную часть сайта
2) Создайте на сайте раздел или страницу с помощью панели администрирования;
#

#

3) В визуальном редакторе в панели компонентов справа найдите раздел Тюнинг-Софт –> Отзывы о магазине +
#

4) Перетащите мышкой значок компонента в область визуального редактора
#

5) Если настройки не открылись автоматически, надо кликнуть дважды по значку
6) В появившемся окне параметров компонента необходимо настроить компонент или оставить все как есть с настройками по умолчанию
7) Сохраните настройки компонента
8) Сохраните страницу
#

Все, отзывы о магазине/товаре/разделе/странице должны работать.
#

1) По возможности избегайте копирования шаблона компонента, т.к. вы теряете его обновления и при обновлении только модуля шаблон также может стать нерабочим, старайтесь обходиться применением стилей, например, в стилях шаблона сайта в файле template_styles.css

2) В настройках компонентов есть возможность отключить вообще все стили шаблонов, в этом случае все стили можете применить, например, также в стилях шаблона сайта в файле template_styles.css 

3) Иногда приходится копировать шаблон, когда много надо сделать изменений, в этом случае вы максимально сможете изменять шаблоны под свои задачи, стили css и jQuery плагины копируются вместе с шаблоном, обновляться будут только сами компоненты и модуль, а скопированные шаблоны не обновляются!

4) Иногда приходится изменять сам модуль или его компоненты, можно конечно скопировать сами компоненты в свое пространство и изменять, но модуль не скопируешь, я в этом случае - отключаю обновления модуля и изменяю все, что можно, модуль больше не будет просить обновляться в админке и все изменения в модуле и компонентах не изменятся, пока вы сами вручную это не сделаете.

Технические данные

Опубликован:
21.11.2015
Обновлен:
18.07.2017
Версия:
3.6.4
Установок:
100 - 499
Битрикс:
Первый сайт, Старт, Стандарт, Малый бизнес, Эксперт, Бизнес
Адаптивность:
Да
Композит:
Да

История версий

Версия 3.6.4
[x] Добавлена поддержка jQuery 3.2.1
[x] В консоль инструментов разработчика добавлен вывод ошибок при проблемах с jQuery, например, когда вообще отсутствует или не соответствует версия.
[x] Переработаны все jQuery-плагины, изменил экшн, чтобы не пересекался с каталожными компонентами
Версия 3.6.3
[x] Все файлы не изображения отдаются аяксом на скачивание
Версия 3.6.2
[x] Добавлен вывод файлов на детальной странице отзыва
Версия 3.6.1
[х] Фикс иконок файлов
Версия 3.6.0
[+] Добавлен загрузчик файлов
Доступен при установленном модуле TS Front-end framework
http://marketplace.1c-bitrix.ru/solutions/api.core/
Поле файл также задается в списке полей в настройках комплексного компонента Отзывы, там же появился раздел настроек "Загрузка файлов"

Имена загружаемых файлов обрабатыватся, все пробелы и киррилица заменяется на подчеркивание и латиницу.
Если в настройках главного модуля включено "Сохранять исходные имена загружаемых файлов", то прикрепленные к отзыву файлы буду храниться в исходном виде, а названием папки будет ID отзыва, например:
/upload/api_reviews/125/2017_07_09_02.26.35.png
Иначе будут создаваться случайные имена папок и файлов
/upload/api_reviews/b71/b715ca407f8180068601fd58de718563.png
Версия 3.5.0
Добавлена поддержка 152-ФЗ о персональных данных
В разделе настроек Форма добавления отзыва добавлены настройки для вывода:
1) Выводить условия Пользовательского соглашения
В этом случае можно вывести флажок и рядом много всякого html-текста
2) Выводить соглашение на обработку персональных данных
В этом случае можно вывести либо строку, либо ссылку на соглашение, подойдет для тех, кто не знаком с html-версткой, если указать там ссылку, то весь текст станет кликабельный.
Чтобы все это проверить, достаточно открыть настройки компонента отзывов и сохранить их, все включится по умолчанию.
Версия 3.4.9
[x] Удалена сортировка по рейтингу, если он отключен в настройках статистики
Версия 3.4.8
[х] Фикс удаления отзыва в админке в списке
[!] Добавил в документацию на вкладке "Описание" раздел "События ORM"
Версия 3.4.7
[x] Фикс закрытия формы добавления отзыва
Версия 3.4.6
[x] В инсталлятор добавлен модуль api.core
Версия 3.4.5
[х] Форма добавления отзыва работает в паре с модулем api.core
Модуль api.core должен установиться с обновлением, иначе установите вручную.
Версия 3.4.4
[x] В компоненте api:reviews.element.rating исправлена ошибка подключения лэнгов
Версия 3.4.3
[x] Фикс JS-конфликтов
Версия 3.4.2
[x] Фикс JS-конфликтов
Версия 3.4.1
[x] Фикс удаления агента
Версия 3.4.0
[+] В админке добавлена страница управления подписчиками
[+] В админке добавлена страница управления агентами подписчиков
[+] В админке в списке отзывов добавлены новые поля для редактирования
Версия 3.3.1
Компонент "Последние отзывы"
[x] Уменьшил шрифт
Версия 3.3.0
Компонент "Последние отзывы"
[+] Параметр "Ссылки в тексте кликабельные"
[+] Параметр "Макс. длина текста"
[+] Параметр "Формат даты"

Компонент "Форма добавления отзыва"
[+] Сброс кэша компонента "Последние отзывы" при добавлении
Версия 3.2.12
[x] Фикс статистики
Версия 3.2.11
[x] Возможность отключить статистику в настройках компонента
Версия 3.2.10
[x] Аватары сайта заменены на аватары с сервиса Gravatar
Версия 3.2.9
[x] Исправлен внешний вид полей Компания и Веб-сайт
Версия 3.2.8
[x] Функция закрытия анкора от индексации в текстах включена по умолчанию во всех компонентах
Версия 3.2.7
[x] В админке в форме редактирования отзыва улучшены интерфейсы полей:
Инфоблок, Раздел, Элемент, Пользователь
[x] Поля для ответа вынесены в отдельный блок "Ответ на отзыв"
Версия 3.2.6
[x] Исправлена обработка глобального фильтра в списке отзывов, фильтр по умолчанию больше не учитывается.
Версия 3.2.5
[х] Фикс кодировки компонентов
Версия 3.2.4
[х] Обновлены некоторые языковые файлы компонентов от старой версии модуля
Версия 3.2.3
[x] Исправлена ошибка "BX не определено" в некоторых браузерах типа IE
Версия 3.2.2
[x] Исправил конфликт голосований модуля и голосований Битрикс bitrix:iblock.vote в отзывах о товаре.
Компонент встроенный в Битрикс перехватывает переменную vote в реквесте.
Версия 3.2.1
[x] Фикс прокрутки к списку отзывов в постраничной навигации
Версия 3.2.0
[+] Добавлен новый компонент Отзыв детально api:reviews.detail
[+] Добавлен новый компонент Последние отзывы api:reviews.recent
[+] Постраничная навигация работает на AJAX + history.pushState()
[+] Сортировка работает на AJAX + history.pushState()
[+] Отзывы полностью переведены на режим работы комплексного компонента с ЧПУ и без, все возможности модуля только в этом режиме
[+] Во все почтовые шаблоны добавлены новые макросы:
#USER_NAME# - Имя пользователя
#USER_ID# - ID пользователя
#PAGE_URL# -  Адрес страницы
#PAGE_TITLE# - Заголовок страницы
#ID# - ID отзыва
#RATING# - Рейтинг

Для типа API_REVIEWS_ADD
#LINK_ADMIN# - Ссылка на отзыв в админке

[+] В настройках комплексного компонента Отзывы добавлена настройка #Якорь детальной ссылки отзыва
Пригодится, когда отзывы размещены в карточке товара в переключаемых табах с #якорем, например: #tab_reviews
[+] В настройках компонента обновлены подсказки всех доступных макросов в Теме и Тексте уведомлений, а также и в почтовых шаблонах в админке.
[+] Поля PAGE_URL и PAGE_TITLE обновляются при изменении отзыва и при ответе на отзыв в публичке.

Админка
[+] В списке отзывов добавлены цветные индикаторы для удобства:
Зеленый - отзыв активен
Желтый - отзыв на модерации
Красный - отзыв скрыт
[+] В групповые дествия добавлен пункт "На модерацию", дает возможность отправить отзыв заново на моделацию.

Обратите внимание!
[x] Изменены параметры события: onAfterReviewAdd
[x] Дата изменения отзыва теперь обновляется при каждом изменении, хоть при ответе, хоть при активации/деактивации.
[x] Теперь обязательное в базе только одно поле Сайт, все остальные необязательные
[-] Из фильтрации отзывов удалено поле номер заказа ORDER_ID, в поле записывается номер заказа в форме добавления отзыва.

Версия 3.1.3
[x] Исправлена верстка некоторых блоков для лучшего отображения в узкой контентной части.
[x] Исправлена подстановка даты при активации отзыва в публичке
Версия 3.1.2
[x] Фикс обновлений
Версия 3.1.1
[x] Фикс поиска заказа
Версия 3.1.0
[+] Добавлено множество полей для фильтрации списка отзывов в админке, а также столбцы для сортировки по ним
[x] Фикс формы добавления отзыва
[x] Фикс зависимости установщика от версии Битрикс 16.5, достаточно 16+
Версия 3.0.1
Инструкция по установке новой версии отзывов:
1) Удалите с сайта старую версию модуля "Отзывы о магазине +" с сохранением данных в базе, галочка там должна стоять.
2) Теперь обязательно нажмите "Стереть", после удаления модуля в меню появится этот пункт.
3) Теперь заново загрузите из маркетплейс новую версию модуля и установите со всеми обновлениями.

Все готово, проверяйте.
Установка модуля