Обзор Magento для авторизованного клиента на одном продукте

0

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

$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 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>";



            ?>
Теги:
magento

1 ответ

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
    Мне просто нужно вставить этот обзор блока / customer / view.phtml на свою страницу, которую я вставил в свой вопрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню