Magento - отображение случайного обзора вне модуля обзора - PullRequest
2 голосов
/ 06 июня 2011

Я использую Magento 1.5 и пытаюсь добавить небольшую рамку в свою боковую панель для случайного продукта, показывающего изображение продукта, название продукта, звездный рейтинг и часть обзора.

Мне удалось заставить Magento отображать случайный продукт на боковой панели, к сожалению, я не могу найти способ выбрать случайный продукт, основываясь на том, есть ли у него обзор или нет, и я также не могу найти способчтобы загрузить резюме обзора в шаблон боковой панели, который я использую.

Я нашел следующий фрагмент кода примера, но он просто бросает старый добрый вызов необъектной ошибке.

<?php

$storeId    = Mage::app()->getStore()->getId();

$summaryData = Mage::getModel(‘review/review_summary’)
->setStoreId($storeId)
->load($_product->getId());

/* @var $summaryData Mage_Review_Model_Review_Summary */

/*

array(
['primary_id'] => 147
['entity_pk_value'] => 166
['entity_type'] => 1
['reviews_count'] => 1
['rating_summary'] => 80
['store_id'] => 1
)
*/

?>

если у кого-то есть идеи, как заставить это работать, это будет с благодарностью.

Заранее спасибо!

Ответы [ 3 ]

10 голосов
/ 06 июня 2011

Причина, по которой вы получаете эту ошибку, заключается в том, что вы используете кавычки.Используйте 'вместо этого.

В ответ на ваши изменения вы должны загрузить и загрузить 5 случайных продуктов, которые имеют обзор:

$review = Mage::getModel('review/review');
$collection = $review->getProductCollection();
$collection
        ->addAttributeToSelect('*')
        ->getSelect()
                ->limit(5)
                ->order('rand()');
$review->appendSummary($collection);

foreach($collection as $product) {
        var_dump($product->debug());
}

Очевидно, что теперь вы можете сделать что-то вроде:

$product->getRatingSummary()

для извлечения рейтинговых данных и т. Д.

Конечно, вы должны создать блок, чтобы вставить это (или плохой способ -> просто поместить его в некоторый шаблон).

Веселитесь;)

Третье изменение в ответ на ваш вопрос:

/* Getting summary title / body. */
$title = $product->getTitle();
$body  = $product->getDetail();

/* To get (what I assume is) 'star' rating. */
$ratingSummary = $product->getRatingSummary();
$starRating = $ratingSummary['rating_summary'];
2 голосов
/ 06 июня 2011

Вместо того, чтобы выбирать продукт случайным образом и показывать обзор, я бы предпочел выбрать обзор и загрузить соответствующий продукт.Это имеет 2 эффекта: 1. У вас автоматически есть продукт, у которого есть обзор.2. Товары с большим количеством отзывов имеют повышенную вероятность показа.

Но это только я ^^

1 голос
/ 06 июня 2011

Вы, вероятно, ищете Mage_Review_Model_Review::getEntitySummary()

Для простоты Magento уже предоставляет перекрестную ссылку на коллекцию продуктов с отзывами.

$products = Mage::getResourceModel('review/review_product_collection');
$products->getSelect()->order(new Zend_Db_Expr('RAND()'));
$products->setPageSize(3);
foreach ($products as $product) {
    // Picks 3 random products with reviews.
    Mage::getSingleton('review/review')->getEntitySummary($product, $storeId);
    $summary = $product->getRatingSummary();
    // $summary->getRatingSummary() = percentage of average rating values
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...