Несколько рейтингов для одного материала с помощью модуля fivestar.

 Для оценки материалов у друпала есть популярный модуль – fivestar. К сожалению, он не очень приспособлен к оценке материалов по нескольким параметрам, по нескольким осям. С его помощью можно создавать рецензии, и в этих рецензиях можно ставить несколько оценок. И то, для рецензий понадобится целая пачка модулей: fivestar, cck, node comments и, возможно, node limit, или что-то типа него. Последняя dev-версия fivestar 6.x-1.x-dev, что вышла 28 января, исправляет этот досадный недостаток. Но использовать её просто невозможно. Она просто-напросто игнорирует все устанавливаемые параметры.

Я нашел вот эту темку. И выловил в ней вот такой сниппет:

  1. <?php
  2. $nid = arg(1);
  3. $output = '';
  4. $tags = array(
  5. 'quality' => t('Quality'),
  6. 'color' => t('Color'),
  7. 'vote' => t('Overall'),
  8. );
  9.  
  10. foreach ($tags as $tag => $title) {
  11. $votes = fivestar_get_votes('node', $nid, $tag);
  12.  
  13. $values = array(
  14. 'user' => isset($votes['user']['value']) ? $votes['user']['value'] : NULL,
  15. 'average' => isset($votes['average']['value']) ? $votes['average']['value'] : NULL,
  16. 'count' => isset($votes['count']['value']) ? $votes['count']['value'] : NULL,
  17. );
  18.  
  19. $settings = array(
  20. 'stars' => 5,
  21. 'allow_clear' => TRUE,
  22. 'style' => 'average',
  23. 'text' => 'dual',
  24. 'content_type' => 'node',
  25. 'content_id' => $nid,
  26. 'tag' => $tag,
  27. 'autosubmit' => TRUE,
  28. 'title' => $title,
  29. 'feedback_enable' => TRUE,
  30. 'labels_enable' => TRUE,
  31. 'labels' => array(t('Poor'), t('Okay'), t('Good'), t('Great'), t('Awesome')),
  32. );
  33.  
  34. $output .= drupal_get_form('fivestar_custom_widget', $values, $settings);
  35. }
  36.  
  37. print $output;
  38. ?>

К этому коду предполагается исправить (пропатчить) сам модуль, но, судя по всему, последняя версия 6.x-1.19 уже содержит все необходимые изменения, так что всё работает как есть.

Хехе. Теперь осталось решить еще одну проблему. Теперь у меня есть несколько рейтингов, но указать для каждого из них отдельный виджет (один рейтинг красными звёздочками, а другой синими, например) нельзя!

Комментарии

Отправить комментарий

Подробнее о форматировании

Отправляя эту форму, вы соглашаетесь с политикой приватности Mollom.