Сложная система голосования up/down

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

Аватар пользователя Айдар Айдар 19 сентября 2011 в 21:17

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

Дано: словарь "лекарства" с терминами - названиями лекарств; 2 типа материала: болезни и лекарства, так что каждой болезни присваиваются термины из словаря "лекарства", а каждому лекарству присваивается только один термин - то же самое лекарство (только не спрашивайте нафига так).
Т.е. как бы одно лекарство соответствует одной ноде "лекарства", но нескольким нодам "болезни" (что логично).

Требуется: система голосования типа +1/-1 для любой нод "лекарства", но с заданием к каждой такой ноде нескольких характеристик действия лекарства в отношении каждой болезни отдельно.

Пример: есть нода "Аспирин", есть термин таксономии "Аспирин", есть ноды "Грипп" и "Пульпит". Требуется в ноде "Аспирин" организовать голосование в плюс или минус по нескольким пунктам: "Помогает при гриппе как жаропонижающее", "Помогает при пульпите как болеутоляющее", а затем в ноде "Грипп" и "Пульпит" показать, сколько плюсиков и минусиков у "Аспирина" (и других лекарств). Ну и желательна возможность в views выводить значения.

Читал (пока не ставил) модули Flag и Vote ip/down, но так и не понял из описания, как именно они работают и есть ли у них такая возможность. Может быть задействовать тут Similar by terms?

ПыСы заодно перетошнил левыми ключами страницу немножко Smile

Комментарии

Аватар пользователя Айдар Айдар 19 сентября 2011 в 22:45

"Lotar" wrote:
Лучше 5 звезд

Я как раз сразу отвалил 5 звезд (6.x-1.19) из-за невозможности вывести несколько виджетов в рамках одной ноды. Или Вы тоже про семерку, или я не разобрался?
"RxB" wrote:
на семёрке влёт решается, мышкой из одминке

Модуль?

Аватар пользователя Айдар Айдар 19 сентября 2011 в 22:54

Спасибо! Пойду покурю дев-версию (я так понимаю, моя хотелка спрятана в "Multiple Axis ratings"?)
Только жаль в fivestar нет +/-, а только звезды.

Аватар пользователя gorr gorr 20 сентября 2011 в 13:37

Я выкладывал кажется в той теме "Multiple Axis ratings" пропатченный модуль файвстар с возможностью голосования по нескольким критериям.
Вот нашел ссылку http://drupal.org/files/issues/fivestar.tar_.gz
Потом надо в шаблоне ноды вставить виджеты для каждого критерия вручную и все работает.

Аватар пользователя Айдар Айдар 20 сентября 2011 в 14:00

"<a href="mailto:Sentrashy@drupal.org">Sentrashy@drupal.org</a>" wrote:
rate чем не угодил?

Незнанием! Smile

Спасибо Огромное! Кажется то, что я искал.

ПыСы Круто! таки включили флаги.

Аватар пользователя Айдар Айдар 20 сентября 2011 в 20:21

Вроде слелал, но одного не пойму - как перевести слова 'up'/'down', в переводе интерфейса их нет, в файлах модуля тоже не нашел подходящего?

Аватар пользователя Sentrashy@drupal.org Sentrashy@drupal.org 20 сентября 2011 в 20:37

Если это те слова, которые появляются после того как проголосуешь, то они обернуты в t. В этом можно убедиться - открыв в модуле папку с нужным виджетом и посмотрев в шаблон. Да, их хер найдешь в переводе, поэтому копируем английский текст прямо из исходного кода (шаблона) и вставляем в строку поиска Wink

Аватар пользователя Айдар Айдар 20 сентября 2011 в 21:04

К сожалению, не нашел - там вовсе нет переменных в t.
Вот кусок кода из thumbs-up-down.tpl.php:

<?php<ul>
  <li class="thumb-up">
    <?php print $up_button?>
    <div class="percent"><?php print $results['up_percent'] . '%'?></div>
  </li>
  <li class="thumb-down">
    <?php print $down_button?>
    <div class="percent"><?php print $results['down_percent'] . '%'?></div>
  </li>
</ul>
<?php
if ($info) {
  print 
'<div class="rate-info">' $info '</div>';?>
Аватар пользователя Айдар Айдар 20 сентября 2011 в 23:12

В общем решил вопрос отчасти:

По описанию в сабже вывел виджет в нодах "лекарства", затем посредством "Similar By Terms" (аргументом "SimilarByTerms: Nid" вывел кликабельные виджеты в "болезни".
Примеры результата: вот в лекарствах, вот в болезни (на обеих страницах под текстом ноды; диз не ругайте - руки пока не дошли).

В итоге получилось не совсем правильно, т.к. голосуя на странице болезни, юзер голосует как бы динамически за соотношение лекарства и болезни, а голосуя со страницы лекарства - просто за это самое лекарство.

Пытался додуматься как вывести на странице лекарства посредством того же "Similar By Terms" список ассоциированных с ним болезней, но там лажа полная:
вариант 1: создаем еще одну такую же вьюху, но затем меняем в ней выводимый тип материала с лекарств на болезни - тогда вообще нифига не выводится (и верно, ведь виджет Rate включен только для лекарств).
вариант 2: включаем виджет для болезней и выводим ассоциированные с неким лекарством болезни с помощью "Similar By Terms" на странице этого лекарства, но тогда получается, что в двух и более местах перекрещивания нод будут выводиться 2 разных виджета (с разными данными), что более неправильно чем как я сейчас вывел.

Если у кого-то еще не взорвался мозг и есть хоть какие мысли о том, как вывести один виджет по указанной мной схеме, буду благодарен - мягко говоря.