Это очередная статья, посвященная разработке на Drupal. Сегодня затронем такую довольно популярную тему, особенно для блогов, как система рейтинга статей сайта. Не будем долго тянуть, а сразу приступим к реализации. Данный функционал нам позволяет реализовать модуль Fivestar, как устанавливать модули вы уже знаете, на этом не останавливаемся. Замечу, что это не единственный модуль, который позволяет сделать систему рейтинга, но я им пользуюсь с момента освоения Drupal, и он меня болеее чем устраивает, как говорится ничего лишнего. Итак приступим, после того как вы активировали модуль, в разделе «Конфигурация», у нас появился дополнительный пункт

Каких-то глобальных настроек внутри нет, можно лишь задать теги голосования, один тег является категорией, при добавлении системы голосования для типа материала у нас будет возможность в какую категорию ее отнести, но это нам абсолютно не нужно, поэтому всё оставляем как есть. Теперь давайте добавим возможность голосовать за статью на сайте, для какого либо материала, у меня это будет реализовано на типе материала «Статья». Идём по пути «Структура -> Типы материалов -> Статья -> Управление полями» и добавляем необходимое поле, в нашем случае это fivestar. У меня настройки вот такие, естественно можете использовать свои

Замечу, что в качестве виджетов для данного поля у нас доступно:
- Оценивать при редактировании
- Оценивать при просмотре
- Выбрать из списка нужный рейтинг при редактировании
Я выбрал «Оценивать при просмотре», т.к. я хочу что бы пользователи ресурса самостоятельно оценивали статьи, далее нам необходимо выбрать тег для данного рейтинга, помните я писал об этом выше? В данном случае он у нас только один, который идёт по умолчанию

Далее жмём «Сохранить настройки поля», и теперь перед нами появляются настройки поля, где мы можем указать какие-то дополнительные параметры для поля, как например количество звезд – я поставлю 10

И жмём «Сохранить настройки». С настройками поля мы справились, теперь нам необходимо определиться, где у нас будет отображаться данное поле, я для примера выведу его только в анонсе статьи, для этого переходим в пункт «Управление отображение полями -> Анонс», для того типа материала, к которому вы только, что присвоили данное поле

И видим, что наше поле находится в разделе «Скрытый», исправим это и просто перетащим его вверх

И жмём «Сохранить». Теперь давайте посмотрим, что получилось у нас на сайте

Видим, что теперь выводится как нужно. Единственное, что мы не сделали, так это не выставили права, на возможность голосования для «Ролей» на вашем сайте, я дам эту возможность всем ролям, как «Анонимам», так и «Зарегистрированным» пользователям. Для этого переходим в раздел «Пользователи - > Права», и ставим галочки напротив модуля Fivestar

И дальше жмём «Сохранить права доступа». Как вы теперь можете видеть, наша система голосования доступна для всех пользователей сайта. Теперь давайте посмотрим, что еще нам предоставляет данный модуль, давайте изменим вид «Звездочек», для этого идём по пути «Структура-> Типы материалов-> Статья ->Управление отображением -> Анонс», и нажмём по колёсику настройки

И перед нами открывается форма настройки для данного голосования, где мы можем выбрать формат «Звёзд», каким образом подсчитывать значения для данного голосования, а так же текст отображаемый под звёздами, я лишь изменю формат звёзд, ну а вы по своему вкусу

И «Сохраняем», смотрим, что теперь у нас на сайте

Видим, что формат звёзд у нас поменялся, на этом думаю с системой рейтинга для сайта можно закончить. Замечу только, что данная система доступна из Views, и в дальнейшем можно собрать список из самых популярных статей сайта по голосованию.
Комментарии (33)
Спасибо!
Меня очень интересует вопрос: как сделать блок самых популярных статей сайта по голосованию с fivestar с использованием views. Не могли бы написать фото урок. Спасибо.
Добрый день! Подскажите может ли данный модуль блокировать повторные оценки с одного ip
да, может!
Подскажите, пожалуйста, как перевести служебные слова Average и votes
идёте по пути Конфигурация-> Перевод интерфейсов, далее переходите в пункт Перевод и там в через поиск ищите ваши слова и переводите как вам нужно!
Не дает переводить из-за html, вставленного в строку:
Average: !stars
странно! давайте скрин!
ну если не планируете постоянно обновлять модуль, исправьте в самом модуле.
А вы могли бы дать ссылку на мануал? Сама не смогла найти, как это сделать...
так мануала не существует. Открываете папку с модулем, ищите там файл с расширением .module открываете на редактирование, через CTRL+F ищите необходимое слово и вместо него пишите своё. Всё.
Спасибо за статью! Возник вопрос, у меня нода с несколькими оценками и одна общая, как сделать так что бы модуль считал средние оценки (за которые голосуют юзеры) самостоятельно и выводил в основную полоску со звездами?
Молуль нерабочий.
Отменяю свой комментарий =) В настройках не разобрался
Здравствуйте, подскажите а как можно сделать, чтоб автор материала не смог за себя проголосовать.
ну первое что приходит в голову, просто не выводит кнопку голосования для автора статьи через node.tpl.php
А можно-ли с помощью данного модуля сделать рейтинг по нескольким пунктам с суммарной оценкой? Ну скажем как тут http://hosting-ninja.ru/rating/beget/otzyivyi.html
из коробки не получится. Но использовать его для рейтинга по пунктам можно, а дальше самому писать.
Плохо всю голову уже изломал как такой рейтинг реализовать.
Отличный мануал, огромное спасибо!
Есть не большой вопрос - а если хочется в ручную прописать вывод данного поля в тизере в node.tpl.php, то как это должно выглядеть?
И вообще- возможно ли прописать вывод других полей в тизере в ручную? Имею в виду поля, добавленные мной в тип матерьяла.
ок, отлично, спасибо!
Поторопился( пробовал и в node.tpl.php и в page.tpl.php - никакой реакции у скрипта... Хотя если прописать простым echo "что нибудь", то все там выводится.
Что у меня может быть не так?
и еще - если я использую модуль devel и прописываю в шаблоне node.tpl.php
, то он выводит только эти массивы
может быть у меня с шаблоном что то не так?
в управлении отображением полями для типа материала, выводимое поле в node.tp.php не должно быть скрыто! В данном случае в тизере у вас выводится крментарии, ссылки, станартное поле body и созданое поле для типа материала review_scrins_top
Здраствуйте. Как сделать что бы например на http://dacity.ru/product/kurtka-1007346 аноним поставил рейтинг и звездочки остались показывать его оценку а не пропадали? Пока что аноним может голосовать и звездочки пропадают
Не могу найти, подскажите, где устанавливается запрет на повторное голосование зарегистрированными пользователями?
в настройках fivestar эта настройка вроде была, с ходу не подскажу ибо не так часто приходится использовать данный модуль.
А при помощи модуля можно сортировать статьи по рейтингу? То есть сортировку не по дате, а по оценкам пользователей. Плюс, еще бы отлично по категориям разбивать.
да, можно.
А этот модуль можно теммизировать? нужен модуль способный принять свои звезды через css
Здравствуйте.
А гугл будет подхватывать в сниппет этот рейтинг или для этого надо еще какие-то манипуляции проводить?
И ткните как устанавливать Fivestar
Спасибо.