設定可能な商品のページに簡単な商品のレビューを表示したい。
誰か助けてもらえますか?
よろしく!
以下のコードは、構成可能な製品と単純な製品の両方の評価とレビューを表示します。レビュー数と全体的な平均評価を示す製品ページの上部にある概要も変更する必要があることに注意してください.
/app/code/core/Mage/Review/Block/Product/View.php をコアからローカルにコピーし、変更します。75行目は次のとおりです。
$this->_reviewsCollection = Mage::getModel('review/review')->getCollection()
->addStoreFilter(Mage::app()->getStore()->getId())
->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED)
->addEntityFilter('product', $this->getProduct()->getId())
->setDateOrder();
次のように変更します。
if ($this->getProduct()->isConfigurable()){
//Get both configurable product and associated simple product reviews
$children_ids = Mage::getModel('catalog/product_type_configurable')->getChildrenIds($this->getProduct()->getId());
$entity_ids = array($this->getProduct()->getId(), $children_ids);
$this->_reviewsCollection = Mage::getModel('review/review')->getCollection()
->addStoreFilter(Mage::app()->getStore()->getId())
->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED)
->addFieldToFilter('entity_pk_value', array('in' => $entity_ids))
->setDateOrder();
} else {
$this->_reviewsCollection = Mage::getModel('review/review')->getCollection()
->addStoreFilter(Mage::app()->getStore()->getId())
->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED)
->addEntityFilter('product', $this->getProduct()->getId())
->setDateOrder();
}
まず、次のステートメントを使用して、構成可能な製品に属する製品の ID を取得します。
$children_ids = Mage::getModel ('catalog/product_type_configurable')->getChildrenIds ($_product->getId ());
次に、すべての単純な製品をトラバースして、次のようにレビューを取得します。
foreach ($children_ids as $child_id)
{
foreach ($child_id as $id)
{
$_items2 = Mage::getModel('review/review')->getCollection()
->addStoreFilter(Mage::app()->getStore()->getId())
->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED)
->addEntityFilter('product', $id)
->addRateVotes()
->setDateOrder();
$_items = $_items2->getItems ();
}}
$_items の使用方法を理解するには、"view/list.phtml" を参照してください。