I'm new to magento and i'm currently working on the CE1.9 for work. I'm having trouble to get the average rating of the current category. Can someone help me ?
$category_id = Mage::getModel('catalog/layer')->getCurrentCategory()->getId();
$category = Mage::getModel('catalog/category')->load($category_id);
$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*')->addCategoryFilter($category)->load();
$reviews = array();
foreach ($products as $product) {
$productId = $product->getId();
array_push($reviews, Mage::getModel('review/review')
->getResourceCollection()
->addStoreFilter(Mage::app()->getStore()->getId())
->addEntityFilter('product', $productId)
->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED)
->setDateOrder()
->addRateVotes()
);
}
foreach ($reviews as $review) {
$_votes = $review->getRatingVotes()->getFirstItem();
$totalRating += $_votes->getFirstItem()->getValue();
}
Zend_debug::dump(100 * $totalRating / (5 * $reviews));
Did I miss something?
Thanks in advance
Okay, I solved it myself.
For those interested, here is the code:
$categoryId = Mage::getModel('catalog/layer')->getCurrentCategory()->getId();
$currentCategory = Mage::getModel('catalog/category')->load($categoryId);
$productList = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*')->addCategoryFilter($currentCategory)->load();
$reviewList = array();
$storeId = Mage::app()->getStore()->getId();
foreach ($productList as $product) {
$summaryData = Mage::getModel('review/review_summary')->setStoreId($storeId)->load($product->getEntityID());
$reviewData[] = $summaryData['rating_summary'] / 20;
}
$nbReview = 0;
foreach ($reviewData as $review) {
if ($review != Null)
$nbReviews++;
$totalReviewIntoStar += $review;
}
return $AvgRating = $totalReviewIntoStar / $nbReviews;