Fivestar / Rate - модули рейтинга для товаров

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

Аватар пользователя Danunafik Danunafik 6 сентября в 1:46

Здравствуйте.

Какой модуль лучше для рейтинга товаров с виджетом типа 5 звезд. Пробовал Fivestar, Rate. Не понял зачем в товаре, в котором пользователь проголосовал, показывается звезды согласно его голосу, а не среднее значение. Т.е. если средний рейтинг товара 40% (2 звезды), и пользователь поставит например 100% (5 звезд), то ему в товаре и будет показываться 5 звезд. В каком модуле это можно отключить и сделать чтобы показывалось среднее значение ? Или это глюк, или я что то не так делаю, или так и надо ? Псевдополе рейтинга выводится в перезаписанном темплейте товара commerce, а не во views.

Еще как я понял все модули не показывают рейтинги типа 3.5 звезды. Может вообще забить на всё тогда и перезаписать полностью темплейт модуля, просто брать процент и выводить картинку со звездами, типа:

{% if rating < 10 %}
  <div class="stars-0-5"></div>
{% elseif rating < 20 %}
  <div class="stars-1-0"></div>
{% elseif rating < 30 %}
  <div class="stars-1-5"></div>
...
{% endif %}

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

Да и вообще, для анонимных пользователей и других, которые не имеют прав проставлять рейтинги, думаю такой код для вывода звезд в модуле как то слегка неоптимизирован. Можно же просто вывести картинку готовую в <div class="stars-0-5"></div> вместо этого вот всего:

<div class="fivestar-rating-wrapper rate-disabled" can-edit="false"><div class="form-type-boolean form-item js-form-item form-type-radio js-form-type-radio form-item-value js-form-item-value">
  <label class="form-type-boolean form-item js-form-item form-type-radio js-form-type-radio form-item-value js-form-item-value rating-label fivestar-rating-label fivestar-rating-label-0 full"><input twig-suggestion="rating-input" class="rating-input fivestar-rating-input fivestar-rating-input-0 form-radio form-boolean form-boolean--type-radio" data-drupal-selector="edit-value-0" type="radio" id="edit-value-0" name="value" value="0">

  </label>
    </div>
<div class="form-type-boolean form-item js-form-item form-type-radio js-form-type-radio form-item-value js-form-item-value">
  <label class="form-type-boolean form-item js-form-item form-type-radio js-form-type-radio form-item-value js-form-item-value rating-label fivestar-rating-label fivestar-rating-label-25 full" style="cursor: pointer;"><input twig-suggestion="rating-input" class="rating-input fivestar-rating-input fivestar-rating-input-25 form-radio form-boolean form-boolean--type-radio" data-drupal-selector="edit-value-25" type="radio" id="edit-value-25" name="value" value="25">

  </label>
    </div>
<div class="form-type-boolean form-item js-form-item form-type-radio js-form-type-radio form-item-value js-form-item-value">
  <label class="form-type-boolean form-item js-form-item form-type-radio js-form-type-radio form-item-value js-form-item-value rating-label fivestar-rating-label fivestar-rating-label-50 rate-voted full"><input twig-suggestion="rating-input" class="rating-input fivestar-rating-input fivestar-rating-input-50 form-radio form-boolean form-boolean--type-radio" data-drupal-selector="edit-value-50" type="radio" id="edit-value-50" name="value" value="50" checked="checked">

  </label>
    </div>
<div class="form-type-boolean form-item js-form-item form-type-radio js-form-type-radio form-item-value js-form-item-value">
  <label class="form-type-boolean form-item js-form-item form-type-radio js-form-type-radio form-item-value js-form-item-value rating-label fivestar-rating-label fivestar-rating-label-75"><input twig-suggestion="rating-input" class="rating-input fivestar-rating-input fivestar-rating-input-75 form-radio form-boolean form-boolean--type-radio" data-drupal-selector="edit-value-75" type="radio" id="edit-value-75" name="value" value="75">

  </label>
    </div>
<div class="form-type-boolean form-item js-form-item form-type-radio js-form-type-radio form-item-value js-form-item-value">
  <label class="form-type-boolean form-item js-form-item form-type-radio js-form-type-radio form-item-value js-form-item-value rating-label fivestar-rating-label fivestar-rating-label-100"><input twig-suggestion="rating-input" class="rating-input fivestar-rating-input fivestar-rating-input-100 form-radio form-boolean form-boolean--type-radio" data-drupal-selector="edit-value-100" type="radio" id="edit-value-100" name="value" value="100">

  </label>
      <div class="rating-option-result">40</div>
    </div>
</div>

Комментарии

Аватар пользователя Danunafik Danunafik 6 сентября в 21:06

То ли кони не едут, то ли я что-то. Решил снова попробовать fivestar. Так теперь не могу запретить анонимным пользователям голосовать. Независимо от того что включено в правах доступа пользователей:
"Use Fivestar to rate content"
незарегистрированные пользователи могут голосовать и голоса учитываются.

Аватар пользователя Danunafik Danunafik 6 сентября в 21:30

Бред какой то. Не может же быть что все модули глючат со звездами. Вот теперь fivestar выдает такое. Слева у админа показывается две звезды, справа у зарегистрированного пользователя показывается одна, хотя оба ставили по одной звезде.

Дополнение - засек фишку. Справа скрин из мозиллы. Закрыл мозиллу - открыл мозиллу - одна звезда. Обновил страницу - две звезды. Опять закрыл мозиллу - открыл мозиллу - 1 звезда. Обновил страницу - две звезды. Открыл яндекс браузер, зашел под тем же пользователем что и у мозиллы - 2 звезды. Обновил - всё равно две. Открыл мозиллу - две звезды. Теперь везде две звезды. Что это было, может все проблемы из за того что я вывожу поле рейтинга в twig ? Ни права не работают, и кеширование какое-нибудь глючит.

Дополнение 2 - с мозиллой понятно, она звезды как то кэширует, а значение нет. Если нажать в мозилле CTRL+F5 звезды становятся как надо. Остался вопрос с правами доступа.