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, дополнительно необходим модуль Некэшируемая область

Установка

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

Информация

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