Jrating - оценка новости

Главные вкладки

Аватар пользователя cwer cwer 13 марта 2007 в 0:57

Если стоит задача дать возможность оценивать новость, можно воспользоваться каким-нибудь модулем голосования. Мне лично понравилось 2 модуля: Fivestar и jRating. Fivestar мне чем-то не угодил. По-моему тем, что там и отметка и общее голосование в одном ммм... блоке. А у jRating это разнесено по 2м (форма голосования и результаты голосования). Да и красивей он (Скриншоты)
Поэтому я начал работать с ним.

Заметки
Модуль требует VotingApi
Работает с jQuery, поэтому обходится без перезагрузки страницы
В админке есть возможность указать вес формы, а так же отображать или нет форму ввода и результат голосования для анонимов и в тизере (все раздельно, скрин внизу)

Что меня не устраивало и какие ошибки я нашел:

Проблема
Количество голосов выводится в каком-то жутчайшем формате обернутым t(). Получается для каждого голосования в модуле локализации находится отдельная строчка.
Решение
- Переопределить вывод результатов голосов. Так как вызывается функция theme_jrating_average_rating, насколько я понял переопределить ее можно в файле template.php (я так не делал. Большая функция - лень разбираться)
- Собственно переделать саму функцию. Более грязный способ. При каждом обновлении придется переделывать опять. Но кто знает, что изменится в новых версиях?:)
Я сделал так:
Строчки

$num_votes_span = '<span id="rating-num-votes-' . $node->nid .'">';
$num_votes_html = $num_votes_span . format_plural($rating['num_votes'], '1</span> vote', 'count</span> votes');

Заменил на

$num_votes_html = t('votes') .': <span id="rating-num-votes-' . $node->nid .'">'. $rating['num_votes']. '</span>';

Проблема
Интеграцией с views пока нет. (В Fivestar вроде есть)
Решение
Пока нет:(

Недочет лично для меня
Результат голосования (как и форма) выводится в тексте новости. Мне захотелось в тизере вывести только результат голосования в поле, где указывается автор.
Решение
Поставил галочки "Display average rating for teasers" и "Display rating form for teasers" на "Нет"
В node.tpl.php в нужном месте добавил

                if ($teaser) {
                        print '<div class="rating-item">' . theme('jrating_average_rating', $node) . '</div>';
                }

Так же немного изменил css.

Удачи Smile

P.S. Пока к друпалевскому wiki не решаюсь подступиться Smile
Да и не тянет на руководство.

P.P.S. Если будет время может сделаю модуль для вывода выпадающего меню в примари линкс. Вывод примари линкс можно переопределить?

Комментарии

Аватар пользователя SadhooKlay SadhooKlay (не проверено) 13 марта 2007 в 1:09

Голосовать за новость бессмысленно.
Имхо, нет в этом ценности.

Я (например) могу статью написать, как вылечится от какой то экзотической болезни.
Но ею никто не болеет, зато все читают статьи о том, как похудеть и голосуют за них.
Но через сорок лет, моя статья может спасти жизнь одному человеку.
А от полноты никто не умирал.

Это всё гипотетически, можно и более реальные примеры привести, но думаю смысл ясен.



----------------------------------------------------------
Локализация некоторых модулей

Аватар пользователя B.X B.X 13 марта 2007 в 1:12

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

Аватар пользователя cwer cwer 13 марта 2007 в 1:34

Голосование полезно на определенных видах ресурсов.
Например галерея. Или каталог Smile
Новости это я так для примера Wink

Аватар пользователя bio3k bio3k 13 марта 2007 в 18:52

Ставил jRating у себя на http://fotoplace.ru - пока сыроват модуль + сами разработчики заявляют, что с views пока работает нестабильно. Кроме того у меня он периодически вызывал ошибку выхода за лимит выделенной памяти. Увеличить этот лимит у меня, к сожалению, возможности нет. Т. ч. у меня пока стоит Fivestars, хотя jRating гораздо лучше Fivestarts. Что ж, ждем "стабилизации" модуля...