Фильтрация товаров по атрибутам в magento - PullRequest
1 голос
/ 15 февраля 2012

Как мне перечислить продукты с определенным атрибутом?например, если Размер является атрибутом в моем наборе атрибутов по умолчанию.Тогда, как мне перечислить все продукты, которые имеют размер = 22?

Я ищу ответ в Google, будет публиковать как ответ, если я найду любой.

Спасибо,

Балан

Ответы [ 3 ]

1 голос
/ 02 октября 2012

Я только что сделал это не так давно

Чтобы получить идентификатор магазина:

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

Чтобы все продукты отфильтровывали все, кроме размера

$_productCollection = Mage::getResourceModel('catalog/product_collection')
    ->addAttributeToSelect('*')
    ->addAttributeToFilter("Size", "1");

Затем просто в цикле foreach добавьте следующее (это перебирает массив $ _productCollection)

foreach($_productCollection as $_product)
{
    $attr = Mage::getResourceModel('catalog/product')->getAttributeRawValue($_product->getId(), 'Size', $storeId);
    if($attr == '22')
    {
        //Echo names of the products
        echo $_product->getName();
    }
}

Таким образом, вы можете многое сделать со списком товаров, не имея строгого списка товаров. Таким образом, вы можете добавить имена, цены и другие атрибуты, если хотите. Надеюсь, это помогло!

0 голосов
/ 15 февраля 2012

Я не думаю, что продукт каталога сделан для этого. Лучше всего было бы переместить атрибут Size в статическую таблицу (catalog_product_entity). Тогда вы сможете выполнять поиск по размеру с сохранением каталога быстро. После, если вы хотите сделать это для другого атрибута, я думаю, вы можете указать его в качестве параметра в коллекции. Но я не уверен в этом.

0 голосов
/ 15 февраля 2012

Например:

    $storeId  = Mage::app()->getStore()->getId();
    $products = Mage::getResourceModel('catalog/product_collection');    

    $products->addAttributeToFilter(array(
                   array('attribute' => 'attribute_code', 'eq' => 22)))
                   ->addAttributeToSelect('*')
                              ->setStoreId($storeId)
                              ->addStoreFilter($storeId)
                  ->setOrder('name', 'desc'); 

      Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);  
  Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
 $this->setProductCollection($products);

для меня это прекрасно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...