Joomla评级,显示%的集成我希望它查看';8.2/10';


Joomla Rating, intead of showing % i want it to view '8.2/10'?

Im使用组件K2,它是投票/评级系统。目前,它以百分比的形式显示评级,并使用一些css来查看星星。但我不想显示恒星,而是想说,例如,4.5/5

这是查看它的代码:

<?php if($this->item->params->get('catItemRating')): ?>
<div id="catItemRatingBlock">
 <div class="itemRatingForm">
   <ul class="itemRatingList">
     <li class="itemCurrentRating" id="itemCurrentRating<?php echo $this->item->id; ?>" style="width:<?php echo $this->item->votingPercentage; ?>%;"></li>
     <li><a href="#" rel="<?php echo $this->item->id;  ?>" class="one-star">1</a></li>
     <li><a href="#" rel="<?php echo $this->item->id;  ?>" class="two-stars">2</a></li>
     <li><a href="#" rel="<?php echo $this->item->id;  ?>" class="three-stars">3</a></li>
     <li><a href="#" rel="<?php echo $this->item->id;  ?>" class="four-stars">4</a></li>
     <li><a href="#" rel="<?php echo $this->item->id;  ?>" class="five-stars">5</a></li>
   </ul>
 </div>
</div>
<?php endif; ?>

这是在"com_k2/models/item.php"中找到的代码:

function getVotesPercentage($itemID = NULL)
{
    $mainframe = &JFactory::getApplication();
    $user = JFactory::getUser();
    $db = &JFactory::getDBO();
    $xhr = false;
    $result = 0;
    if (is_null($itemID))
    {
        $itemID = JRequest::getInt('itemID');
        $xhr = true;
    }
    $vote = K2ModelItem::getRating($itemID);
    if (!is_null($vote) && $vote->rating_count != 0)
    {
        $result = number_format(intval($vote->rating_sum) / intval($vote->rating_count), 2) * 20;
    }
    if ($xhr)
    {
        echo $result;
        $mainframe->close();
    }
    else
        return $result;
}

我该怎么办?

总之,取$this->item->votingPercentage(0到100)中显示的百分比,并将其除以20,将其转换为0到5范围内的数字。当将数字显示为x(满分5)时,您可能希望保留小数点后1位的准确性。

由于您不知道votingPercentage是字符串还是数字,因此在进行任何计算之前,我会对其进行测试,以确保其具有有效的数值:

<?php
if (!isnumeric($this->item->votingPercentage) {
   $numericRating = 0;
// If the value cannot be interpreted as a numeric, we assume a value of 0.
}
else {
   $numericRating = round(($this->item->votingPercentage / 2), 0);  
// The statement above is equivalent to dividing the percentage by 20 (to get a number from 0 to 5); and then multiplying by 10 to get a number from 0 to 50.  Since this final number could have a decimal component (for example 42.55 out of 50), we round to 0 decimal places to get rid of the decimal remainder - in this example, resulting in the number 43
   $numericRating = round(($numericRating / 10), 1);
// The statement above divides the number from the previous step by 10 (to shift the decimal point), and just for good measure, applies the rounding function one more time in case the division yields a number like 4.300000001 or 4.29999999
}
echo $numericRating . "/5";
// Finally, the resulting numeric value is rendered as a number from 0 to 5 with 1 decimal place, followed by the characters "/5"  (i.e. out of 5)
?>