Не могу придумать, как сделать следующий рейтинг:
Есть определённый вид материала, есть комментарии к постам в нём. Хочу сделать, чтобы когда пишешь комментарий - можно было поставить оценку посту - хорошо, плохо, средне(выбрать можно только что-то одно). А в самом посте, выводить значения всех этих трёх значений.
Т.е. например выводить так:
Хорошо - 35
Плохо - 2
Средне - 5
Никак не могу придумать, как это реализовать. Есть Fivestar, но там если и делать, то получается 3 поля и за каждое можно голосовать, а мне нужно только чтобы за какое-то одно. Есть Rate - там вообще мне показалось никакой гибкости в нём.
Вот например хороший рецепт http://xandeadx.ru/blog/drupal/790 - но мне нужно, чтобы выбрать можно было только что-то одно. Подскажите, плиз.
Комментарии
https://www.drupal.org/project/starrating
Не подходит. Мне нужно в комменте сделать возможность выбора и выбрать можно только что-то одно, т.е. например - хорошо или плохо. Если выбрать "хорошо", то "плохо" уже нельзя будет выбрать. Допустим в посте было "хорошо - 4", а станет "хорошо - 5".
Я не нашёл, как такое можно создать в Star Rating, там практически тоже самое, что и Fivestar, только ещё менее гибкое.
А чем fivestar на три звезды не устраивает в виде поля к комментарию? А затем в шаблоне отображения node можно уже отдельно считать:
<?php
$query_rating
= db_select('field_data_field_rating', 'r')->fields('r', array('entity_id', field_rating_rating'));
$subquery_comments = db_select('
comment', 'c')->condition('c.nid', $node->$nid)
->condition('c.status', 1)
->fields('c', array('cid'));
$result = $query_rating
r.entity_id', $subquery_comments, 'IN')->condition('
->execute()
->fetchAll();
$count = count($result);
foreach($result as $item) {
if($item->field_rating == 10) $rating1 ++;
if($item->field_rating == 20) $rating2 ++;
if($item->field_rating == 20) $rating3 ++;
}
?>
$rating1,2,3 отображайте самостоятельно без fivestar. Правильнее и удобнее будет вести обновление оценок при добавлении/удалении комментария — hook_node_insert/delete. Под каждое значение плохо, хорошо, отлично — отдельные поля, которые и будут обновляться при добавлении/удалении комментария.
Возможно, подойдет )