Описание
Назначение
Компонент предназначен для создания на сайтах таких разделов и блоков, как:
- отзывы;
- комментарии;
- вопросы пользователей.
Особенность компонента — механизм пользовательских оценок (от 1 до 5, настраивается), на основании которых считается рейтинг по 2-м алгоритмам (средний и продвинутый).
Продвинутый рейтинг считается как нижняя граница доверительного интервала Вильсона (Wilson) для параметра Бернулли (описание). Этот алгоритм позволяет избежать проблем расчета рейтинга при небольшом количестве оценок.
easyComm работает как с неавторизованными пользователями (гостями), так и с авторизованными.
Описание работы компонента
- Пользователь сайта оставляет свой комментарий/отзыв/вопрос к чему либо (например, товару) через специальную форму.
- Администратор сайта получает уведомление на почту, в специальном разделе панели управления сайтом управляет сообщениями (можно опубликовать, удалить, отредактировать), а также оставить свой ответ на него.
- Если пользователь оставил электронную почту, то он получит уведомление на свой email.
- Если используется поле Оценка, то после публикации сообщения происходит перерасчет рейтинга.
- Вы можете включить голосование за каждое сообщение, чтобы пользователи могли оценить его полезность.
Подсказка
Компонент работает с неавторизованными пользователями и не носит социальной направленности. Т.е. он не проектировался как модуль для добавления комментариев в блогах или каких-либо социальных сетях (хотя вы можете попробовать использовать его и там на свой страх и риск).
Цель easyComm — связь с покупателями интернет магазинов, посетителями сайтов компаний, продающих услуги.
Возможности
- Создание произвольного количества цепочек сообщений. Сообщения привязаны не к ресурсам, а к цепочкам, а те в свою очередь к ресурсу, это позволяет на одной странице создать несколько цепочек сообщений, к примеру, Отзывы и Вопросы.
- Полноценное управление всеми сообщениями и цепочками через админку. Компонент добавляет свой пункт в меню Приложения, через который администратор может создавать/редактировать/удалять как цепочки, так и сообщения.
- Вкладка «Сообщения» на странице ресурса. Повторяет функционал, описанный в предыдущем пункте, но с условием, что здесь доступны только сообщения и цепочки, относящиеся к текущему ресурсу.
- Уведомления по почте. Приходит уведомления администратору о новом сообщении, а если пользователь оставил свою электронную почту, то и ему о том, что он оставил сообщение и о том, что его сообщение опубликовано на сайте.
- Оценки и рейтинг. В компонент добавлен функционал, позволяющий пользователям давать свою оценку чего-либо, а на ее основании рассчитывается общий рейтинг по 2-м алгоритмам.
- Добавление произвольных полей. Если вам недостаточно стандартного набора полей у сообщения (а это Дата, Имя пользователя, Эл. почта, Контакты, Оценка, Тема сообщения, Текст сообщения, Автор ответа, Текст ответа), то при помощи системы плагинов есть возможность добавить произвольное количество своих полей.
- Несколько полей рейтинга. Хоть в компоненте присутствует одно поле rating, но механизм добавления дополнительных полей позволяет добавить в том числе и поля с типом рейтинг (звездочками), причем для них так же будут высчитываться средние показатели. Таким образом вы можете дать возможность проставлять сразу несколько оценок.
- Кастомизация внешнего вида. Внешний вид на фронтенде изменяется привычным способом — путем создания своих чанков. В админке так же есть возможность изменить внешний вид: можно поменять как набор колонок в списках, так и поля, доступные при редактировании сообщения.
- Поддержка Gravatar. Сниппет ecMessages поддерживает gravatar. Если у сообщения заполнен email, то в чанке вывода сообщения доступен плейсхолдер gravatar.
- Вывод расширенного рейтинга. Сниппет ecThreadRating поддерживает вывод подробной информации о голосах пользователей. Вместе с компонентом идет отдельный чанк
tpl.ecThreadDetailedRating
, в котором реализован подобный вывод. - Голосование за Сообщения. Голосование (Нравится/Не нравится) за каждое отдельное Сообщение, как для авторизованных пользователей, так и для гостей.
- По-умолчанию оценка проставляется от 1 до 5, но вы можете это изменить, например сделать от 1 до 10. Для этого есть специальная настройка, также потребуется внести изменения в html разметку и css правила.
Зависимости
Для корректной работы необходимо (вы должны самостоятельно установить на сайт):
- установленная библиотека pdoTools (в чанках используется парсер Fenom, входящий в состав pdoTools);
- в чанке вывода сообщения дополнительно используется сниппет dateAgo для формирования «красивой» даты (но можно и без него).
Информация
Старые версии компонента (до 1.11.4-pl) требовали наличие на фронте библиотеки jQuery и плагина jquery.form.
Пример работы
Форма добавления сообщения
При помощи сниппета [[!ecForm]]
отображаем форму добавления нового сообщения на странице сайта, например в карточке товара. На скриншоте стандартный набор полей, вы можете оставить только те, что нужны.
Когда пользователь заполняет форму и отправляет ее, сообщение сохраняется в базе со статусом "не опубликовано" (кстати, есть возможность автопубликации сообщений, см. параметры сниппета [[!ecForm]]
). Менеджеру сайта приходит уведомление на электронную почту. Если пользователь оставил свою электронную почту, ему так же придет уведомление о том, что его сообщение получено и ожидает модерации.
Менеджер в специальном разделе панели управления может управлять сообщениями, например опубликовать их, оставить свой ответ, удалить. При редактировании сообщения менеджер имеет возможность установить галочку "уведомить об ответе", в этом случае пользователь получит уведомление на почту о том, что его сообщение на сайте опубликовано. Возможны различные варианты действий, например: опубликовал без ответа; опубликовал и оставил ответ; не публиковал на сайте, но ответил.
Вывод сообщений
При помощи сниппета [[!ecMessages]]
выводятся опубликованные сообщения на странице сайта.
Объекты Сообщение и Цепочка
Компонент оперирует двумя основными объектами:
- Сообщение (объект ecMessage);
- Цепочка сообщений (объект ecThread).
Благодаря тому, что все сообщения привязаны к цепочке, а не к ресурсу, можно на одной странице использовать несколько вызовов easyComm и создать, к примеру, 2 вкладки: "Отзывы о товаре" и "Вопросы о товаре".
Поля объекта ecThread:
- resource - id ресурса, к которому относится цепочка
- name - уникальное имя цепочки, например "resource-123";
- title - заголовок цепочки (для удобства), например "Отзывы о товаре 123";
- message_last - id последнего опубликованного и неудаленного сообщения;
- message_last_date - дата последнего опубликованного и неудаленного сообщения;
- count - количество опубликованных и неудаленных сообщений в цепочке;
- votes - данные с количеством голосов (например оценка "1" - 3 голоса, "2" - 0 голосов и т.д.), в формате json;
- properties - параметры, с которыми вызывался сниппет ecForm, создавший эту цепочку;
- extended - поле не используется в текущей версии, можете использовать по своему усмотрению;
- rating_simple - средняя оценка, на основании всех сообщений в цепочке;
- rating_wilson - оценка, рассчитанная с использованием алгоритма Вильсона.
Поля объекта ecMessage:
- thread - id цепочки;
- subject - тема сообщения, например вы можете создать выпадающий список со значениями "Служба поддержки", "Отдел продаж";
- date - дата и время;
- user_name - имя пользователя, который оставил сообщение;
- user_email - электронная почта;
- user_contacts - контактная информация;
- text - текст сообщения;
- reply_author - автор ответа;
- reply_text - текст ответа;
- notify - уведомить об ответе пользователя;
- notify_date - дата последнего уведомления пользователя (что бы не уведомлять 2 раза);
- ip - IP адрес;
- rating - оценка;
- votes - общее кол-во голосов (как "Нравится", так и "Не нравится");
- dislikes - кол-во голосов Нравится;
- rating - кол-во голосов Не нравится;
- votes_rating - оценка голосов (рейтинг) Сообщения;
- extended - не используется в текущей версии.
Кроме того, у сообщения есть такие поля: createdon
, createdby
, editedon
, editedby
, published
, publishedon
, publishedby
, deleted
, deletedon
, deletedby
, назначение их ясно из названия поля.