2015-01-30 2 views
0

У меня есть цикл, который показывает все продукты, заказанные клиентом, в этом цикле я хочу вытащить, если клиент оценил этот продукт, какой рейтинг он дал ему. Я думаю, проблема в том, что мне нужно использовать обзор/сводку для отображения рейтинга?Обзор Magento для зарегистрированного клиента на одном продукте

$productsreviews = Mage::getModel('review/review')->getProductCollection()->addCustomerFilter(Mage::getSingleton('customer/session')->getCustomerId())->setDateOrder(); 
    foreach ($productsreviews as $productsreview) 
      { 
       $product = Mage::getModel('catalog/product')->load($productsreview->getData('entity_pk_value')); 
      } 

    echo $product->getRating(); 

EDIT: Полный код

<?php 
if (Mage::getSingleton('customer/session')->isLoggedIn()) { 

/* Get the customer data */ 
$customer  = Mage::getSingleton('customer/session')->getCustomer(); 
/* Get the customer's email address */ 
$customer_email = $customer->getEmail(); 
$customer_id = $customer->getId(); 

} 

$collection = Mage::getModel('sales/order')->getCollection()->addAttributeToFilter('customer_email', array(
'like' => $customer_email 
)); 



$uniuqProductSkus = array(); 

foreach ($collection as $order) { 

    $order_id = $order->getId(); 
    $order = Mage::getModel("sales/order")->load($order_id); 
    $ordered_items = $order->getAllItems(); 
     foreach ($ordered_items as $item) 
     { 
     if (in_array($item->getProduct()->getSku(), $uniuqProductSkus)) { 
     continue; 
     } else { 
      array_push($uniuqProductSkus, $item->getProduct()->getSku()); 

      $_product     = Mage::getModel('catalog/product')->load($item->getProductId()); 
      $product_small_image_path = Mage::helper('catalog/image')->init($_product, 'small_image')->resize(200); 
      $product_thumbnail_path = Mage::helper('catalog/image')->init($_product, 'small_image')->resize(150); 
      $summaryData    = Mage::getModel('review/review_summary')->load($item->getProductId()); 


      echo "<li>"; 

      echo "<div class='previous-name'><p><a style='color:black; font-weight:bold; font-size:14px;' href='" . $_product->getProductUrl() . "'>"; 
      echo $item->getName() . "</a></p></div>"; 

      echo "<div class='previous-image'><a href='" . $_product->getProductUrl() . "'>"; 
      echo "<img src='" . $product_small_image_path . "' />"; 
      echo "</a></div>"; 

      echo "<div class='previous-rating'>"; 
      echo "<p><a style='color:black; font-weight:bold; font-size:14px;' href='" . $_product->getProductUrl() . "#product_tabs_review_tabbed'>Review this beer now</a></p>"; 

      echo $summaryData->getRatingSummary() . '% Would buy again <br/>'; 

      echo "<div class='rating-box' style='float:left;'>"; 
      echo "<div class='rating' style='width:" . $summaryData->getRatingSummary() . "%'></div></div>"; 
      echo "<div class='previous-clear'></div></div>"; 



      ?> 

ответ

0

обзор/резюме будет отображать агрегированные данные. IIRC нет способа вытащить один обзор вместе с рейтингом с использованием модели обзора. Это должно дать вам объект обзора с попутным рейтинг:

 $cReviews = Mage::getModel('review/review')->getResourceCollection() 
        ->addStoreFilter($oProduct->getStoreId()) 
        ->addRateVotes() 
        ->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED) 
        ->addEntityFilter('product', $oProduct->getId()) 
        ->setDateOrder() 
        ->addFieldToFilter('customer_id', $yourCustomerId); 
$cReviews->getSelect()->limit(1); 
$oReview = $cReviews->getFirstItem(); 

Тогда вам придется вычислить рейтинг в среднем за одного обзора:

if (($cRatings = $oReview->getRatingVotes()) && count($cRatings)) { 
      $rAverage = array_sum($cRatings->getColumnValues('value'))/count($cRatings); 
      } 
+0

я в основном просто нужно, чтобы получить этот блок обзор/клиента/вид .phtml в мою пользовательскую страницу, которую я вставил в моем вопросе –

Смежные вопросы