Нужно — организовать систему, при которой пользователь сможет в комментарии оценить материал по одному или нескольким параметрам. В самом же материале будет выводится средний рейтинг (средние рейтинги):
Решение с помощью Fivestar (нужна dev версия от 2014-Mar-24 или выше):
-
Если рейтингов будет несколько, то на странице
admin/config/content/fivestar
прописываем по тегу на каждый рейтинг:Названия тегов можно выбрать любые.
-
Добавляем в нужный тип материала новое поле типа Fivestar Rating и виджетом Stars (rated while viewing) (именно "viewing", это важно).
Если рейтингов будет несколько, то в настройках поля нужно выбрать соответствующий voting tag, созданный в первом пункте:
-
По аналогии создаём другие поля с указанием соответствующего voting tag.
-
В настройках форматтера добавленных полей отключаем опцию Allow voting on the entity и выбираем тип отображения рейтинга — Average vote:
-
Переходим к управлению полями комментариев и добавляем существующие поля рейтинга, но в качестве виджета выбираем Stars (rated while editing) (именно "editing", это важно):
-
В настройках полей выбираем опцию Voting target равной Parent node, voting tag не изменяем:
-
На странице
admin/people/permissions
даём право нужным ролям оценивать контент.
Profit.
Замечание — один пользователь может оценить материал только один раз, учитываться будет рейтинг последнего комментария. Анонимные пользователи различаются по IP (следует учесть при тестировании на локалке, где ip всегда один).
Инструкция написана на основе статьи Fivestar 7.x: Creating a User Comment/Rating and Average Rating for a Content type.
Похожая статья — Add Fivestar ratings in comments and display average rating in node.
Возможно кто-то знает лучшие способы создания подобных рейтингов?
Комментарии
Думаю для всяческих рейтингов лучше использовать модуль Rate, он более гибкий.
rate не имеет виджета для формы и не умеет обновлять среднее значение родительской сущности
Можно ли настроить так, чтобы учитывался не рейтинг последнего комментария, а среднее значение от всех комментариев ?
Как всё просто оказалось, спасибо за наводку, попробую реализацию в рецептах.
Хорошая статья всё получилось для Drupal 7. А как это сделать для Drupal 8?
Добавить комментарий