Общее количество голосов под оценкой. Модуль Rate

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

Комментарии

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 25 января 2013 в 0:46

Так вроде сам виджет показывает число проголосовавших? Там есть режимы показа - компактный и тд. Или проблема вообще вывести виджет? В ридми написано помню было

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 25 января 2013 в 1:27

А в филдсете выше, тот что "Display settings"

Я использовал оттуда только виджет файвстар, там с дефолтными настройками показывало Total votes

Аватар пользователя iNFerNo iNFerNo 25 января 2013 в 8:36

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

вообще в друпале ничего нет нормального для этого.

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 27 января 2013 в 13:34

"iNFerNo" wrote:
Жаль что нет мода для нескольких виджетов что бы общее выводить по нескольким... в виде цифр и самого результирующего виджета.

Использую Rate для голосования по множественным критериям. Например, товар имеет критерии голосования: Цена, качество материала, дизайн.

Чтобы вывести средний оъединённый рейтинг я написал следущее

<?php

function aggregated_product_rating($node) {

  

$output '';
  
$widgets rate_get_active_widgets('node'$node->type);
  
$widget_count count($widgets);
  
$results = array();

  foreach (

$widgets as $widget) {
    
$votingapi_results votingapi_select_results(array(
      
'entity_type' => 'node',
      
'entity_id' => $node->nid,
      
'tag' => $widget->tag,
      
'value_type' => $widget->value_type,
    ));

    foreach (

$votingapi_results as $result) {
      if (
$result['function'] == 'average') {
        
$results[] = $result['value'];
      }
    }
  }

  

$aggregated_value array_sum($results) / $widget_count;
  if (
$aggregated_value) {
    
$aggregated_value round($aggregated_value);
    
$output .= theme('aggregated_rating', array(
      
'rating' => $aggregated_value,
      
'node' => $node));
  }

  return 

$output;
}

?>

Вот тебе весь "мод"

Аватар пользователя iNFerNo iNFerNo 27 января 2013 в 19:51

Это выводит наверное во все ноды даже если 1 виджет юзается ноды.
А бывает что два виджет и их нельзя суммировать.

пи.эс. в свой модуль кидать или просто код в шаблон ноды?

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
_product
это тип материала?

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 27 января 2013 в 20:32

"iNFerNo" wrote:
Это выводит наверное во все ноды даже если 1 виджет юзается ноды.

Ты определяешь сам набор виджетов по типам нод. rate_get_active_widgets() берёт активные виджеты для данной ноды с учётом её типа

"iNFerNo" wrote:
_product

это тип материала?

Откуда это?

Код что я тебе дал не копи паст. aggregated_rating - это моя собственная функция темизации. Тебе чтобы взять просто цифру достаточно $aggregated_value = round($aggregated_value);

Применять в своём модуле и везде, где можно взять объеект текущей ноды для аргумента $node

Аватар пользователя WebFamily WebFamily 27 января 2013 в 21:13

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
А в филдсете выше, тот что "Display settings"
Я использовал оттуда только виджет файвстар, там с дефолтными настройками показывало Total votes

Жаль но у меня показывает только среднее значение, а нужно выводить количество проголосовавших пользователей.

Аватар пользователя iNFerNo iNFerNo 6 февраля 2013 в 13:24

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
Код что я тебе дал не копи паст. aggregated_rating - это моя собственная функция темизации. Тебе чтобы взять просто цифру достаточно $aggregated_value = round($aggregated_value);

Применять в своём модуле и везде, где можно взять объеект текущей ноды для аргумента $node

а у вас в результате звезды выводятся со средним рейтингом по нескольким критериям? и общий рейтинг для текущего юзера?

ваше решение использовать для сортировок во вьюсе по общему суммарному рейтингу можно будет?