Как отобразить продукты, которые имеют то же значение атрибута, что и связанные продукты, на странице просмотра продукта?
У меня есть требование, когда на странице сведений о продукте (просмотр) мне нужно отобразить связанные продукты, которые имеют тот же цвет, что и просматриваемый продукт.
Например, я нахожусь на странице, на которой показана "Красная" обувь, у меня должна быть красная футболка, Красный холодильник, Красный все остальное, что будет отображаться в качестве сопутствующих товаров (максимум 5 товаров).
Я знаю, что это можно легко сделать в Enterprise edition, но как это сделать в Community edition?
Любой помогите, пожалуйста?
Примечание:
Все продукты являются простыми продуктами.
2 answers
Вы можете создать новый блок (и, возможно, новый шаблон). Вот как вы получаете коллекцию продуктов для своих нужд:
$currentProduct = Mage::registry('current_product');
if ($currentProduct){
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes()) //add some attribtues to select
->addMinimalPrice() //add prices to select
->addFinalPrice()
->addTaxPercents()
->addAttributeToFilter('color', array('eq'=>$currentProduct->getColor());//filter products with the same color
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection); //only active products
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);//only visible products
$collection->setPage(1,5);//limit to 5 products
}
else{
$collection = new Varien_Data_Collection();
}
Теперь в $collection
у вас должны быть нужные вам продукты. Вы можете использовать это в своем пользовательском шаблоне.
Я пытаюсь сделать то же самое в Magento CE 1.9.1.0. В основном я хочу отредактировать блок связанных продуктов, чтобы показать все продукты, которые имеют одинаковое значение для определенного атрибута. В принципе, у меня есть атрибут под названием семейство, и когда вы просматриваете продукт abc, который принадлежит семейству атрибутов "Пепси", я хочу отобразить все другие продукты, которые имеют значение для семейного атрибута "пепси"
Итак, я изменяю файл приложение/дизайн/интерфейс/МОЯ тема/по умолчанию/шаблон/каталог/продукт/список/связанный.phtml
Первое, что я делаю в этом файле, это получаю значение атрибута family, выполнив следующие действия
//get the name of the family that the product being viewed is a part of
$itemcollectionname = Mage::getModel('catalog/product')->load($_product->getId())->getAttributeText('family');
Затем я попытался использовать код в приведенном выше сообщении следующим образом
$rcollection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes()) //add some attribtues to select
->addAttributeToFilter('family', array('eq'=>$itemcollectionname);//filter products with the same family
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($rcollection); //only active products
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($rcollection);//only visible products
$rcollection->setPage(1,5);//limit to 5 products
echo "$rcollection<br />";