Php 如何根据特定星星显示和筛选magento review
我在magento有一家商店。 我们在magento产品页面中应用了明星评论。在我们的产品页面中,我们只有一个价值,那就是质量。每个客户在5颗星内审查产品。我们希望以百分比显示每个星号值。Php 如何根据特定星星显示和筛选magento review,php,magento,Php,Magento,我在magento有一家商店。 我们在magento产品页面中应用了明星评论。在我们的产品页面中,我们只有一个价值,那就是质量。每个客户在5颗星内审查产品。我们希望以百分比显示每个星号值。 例如:- 如果我有三个评论,三个评论中,两个评论有一颗星,我们希望显示一颗星作为一颗星-50%,如果三个评论有两颗星,那么我们将显示两颗星-30%,就像这样 我不知道如何在magento评论中实现这一点。我得到了一份很好的总结。如何找到每颗星的评级值 然后,我想根据星号评论对它们进行筛选,如果我点击1,则只显
例如:- 如果我有三个评论,三个评论中,两个评论有一颗星,我们希望显示一颗星作为一颗星-50%,如果三个评论有两颗星,那么我们将显示两颗星-30%,就像这样 我不知道如何在magento评论中实现这一点。我得到了一份很好的总结。如何找到每颗星的评级值
然后,我想根据星号评论对它们进行筛选,如果我点击1,则只显示一个星号评论;如果我点击2星,则显示2个星号评论。重写区块
Mage\u Review\u区块\产品\视图\列表
,然后添加以下方法来计算平均值
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
like中的方法,您可以调用并获取所有的星号值
$stars = $this->getStarReviewRatings();
foreach($stars as $star=>$value){
echo $star."-".$value;
}