我在magento有一家商店。
我们在magento产品页面中应用了星级评论。在我们的产品页面中,我们只有一个质量值。每个客户在5星级内查看产品。我们希望以百分比显示每个星形值。
例如: - 如果我有3条评论,其中有3条评论,其中2条评论有1颗星,我们希望将1颗星显示为1星级 - 50%并且如果3条评论有2颗星则相同,那么我们将显示2颗星 - 30%喜欢这个。
我不知道如何在magento评论中实现这一目标。我得到rating_summary这很好。我怎样才能找到每颗星的评级值。
之后我想根据星级评论过滤它们,如果我点击1然后只会显示一个星评价,或者如果我点击2星,那么将显示2星评价。
答案 0 :(得分:0)
重写块 success: function (data) {
// Getting the owl carousel
var carousel = $(".owl-carousel");
//creating an array
var elementArray = [];
// splitting the returned data in to an array
//element array split
elementArray = data.split('/>');
// Looping through each element and adding it to the carousel
for (i = 0; i < elementArray.length; i++) {
// Validating that the array element is not empty
if (elementArray[i] != '' || elementArray[i] != ' />') {
$('.owl-carousel').trigger('add.owl.carousel', [elementArray[i] + '/>']).trigger('refresh.owl.carousel');
}
}
}
并添加然后添加以下方法来计算平均值
Mage_Review_Block_Product_View_List
您可以通过从public function getAvgReviewRatings(){
return $this->calculateReviewRatings('avg');
}
public function getStarReviewRatings(){
return $this->calculateReviewRatings('star');
}
private function calculateReviewRatings($params){
$star = array('one'=>0,'two'=>0,'three'=>0,'four'=>0,'five'=>0);
$avg = 0;
$reviews = Mage::getModel('review/review')
->getResourceCollection()
->addStoreFilter(Mage::app()->getStore()->getId())
->addEntityFilter('product', $this->getProductId())
->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED)
->addRateVotes()
->setDateOrder();
$ratings = array();
if (count($reviews) > 0) {
foreach ($reviews->getItems() as $review) {
foreach( $review->getRatingVotes() as $vote ) {
switch($vote->getValue()){
case 1:
$star['one']+=1;
break;
case 2:
$star['two']+=1;
break;
case 3:
$star['three']+=1;
break;
case 4:
$star['four']+=1;
break;
case 5:
$star['five']+=5;
break;
default:
break;
}
$ratings[] = $vote->getPercent();
}
}
if($params == 'avg'){
return (array_sum($ratings)/count($ratings))/20;
}else if($params == 'star'){
return $star;
}
}
}
调用
review/product/view/list.phtml