Magento, получить рейтинг в виде числа в php

Я пытаюсь изменить свой шаблон, чтобы он отражал HTML-код schema.org. Единственная проблема, с которой я столкнулся, — это среднее количество отзывов, которое должно быть числом от 0 до 5.

есть функция getratingssummary, но она используется внутри атрибута стиля div, я думаю, что она не возвращает число

пока у меня это

<?php if ($this->getReviewsCount()): ?>
    <div class="ratings">
        <?php if ($this->getRatingSummary()):?>
          <span itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
            <div class="rating-box">
                <div class="rating" style="width:<?php echo $this->getRatingSummary() ?>%"><meta itemprop="ratingValue" content="5"/></div>
                <span itemprop="reviewCount"><?php echo $this->getReviewsCount() ?></span>
            </div>
          </span>
        <?php endif;?>
        <p class="rating-links">
            <a href="<?php echo $this->getReviewsUrl() ?>"><?php echo $this->__('%d Review(s)', $this->getReviewsCount()) ?></a>
            <!--<span class="separator">|</span>-->
            <!--<a href="<?php echo $this->getReviewsUrl() ?>#review-form"><?php echo $this->__('Add Your Review') ?></a>-->
        </p>
    </div>

person Luis Valencia    schedule 08.09.2012    source источник


Ответы (3)


Функция getRatingSummary возвращает числовое значение, просто это процент. Если вы посмотрите, как это вызывается в атрибуте стиля рейтингового div, вы увидите (если вы замените вызов функции на X)... это определенно возвращает процент.

<div class="rating" style="width:X%">

Я бы повторил вызов функции $this->getRatingSummary() и посмотрел, что вы получите в ответ, а затем вы можете поработать над математикой, чтобы преобразовать его в значение 0-5.

person CCBlackburn    schedule 09.09.2012

Чтобы получить числовой звездный рейтинг, а не процент, откройте нужный помощник по обзору, который может быть любым;

app/design/frontend/default/YOURTHEME/template/review/helper/summary_short.phtml

or

app/design/frontend/default/YOURTHEME/template/review/helper/summary.phtml


И используйте этот код, чтобы получить свой номер;

<?php
$ratingPercent = $this->getRatingSummary();
echo ($ratingPercent * 5)/100;
?>
person Dan Norris    schedule 29.11.2013

Вы можете попробовать это, но вы должны заставить его работать, чтобы отображать число вместо процента:

<?php
$storeId = Mage::app()->getStore()->getId();
$summaryData = Mage::getModel('review/review_summary')->setStoreId($storeId)  ->load($_product->getId());
?>                      

// Rating Percentage showing of a product
 <div class="rating"><?php echo $summaryData['rating_summary']; ?>%</div>  
person Andrew Chok    schedule 29.09.2012