Товары Magento по категориям - PullRequest
1 голос
/ 17 июня 2010

Я пытаюсь получить productsCollection по этому коду:

    $collection = Mage::getModel('catalog/category')->getCollection();
/* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection */
$collection->addAttributeToSelect('url_key')
    ->addAttributeToSelect('name')
    ->addAttributeToSelect('is_anchor')
    ->addAttributeToFilter('is_active', 1)
    ->addIdFilter(array(4,5))//$_categories)
    ->setOrder('position', 'ASC')
    ->joinUrlRewrite()
    ->load();

$productCollection = Mage::getResourceModel('catalog/product_collection');
$layer             = Mage::getSingleton('catalog/layer');
$layer->prepareProductCollection($productCollection);
$productCollection->addCountToCategories($collection);
foreach($productCollection as $product){
    print_r($product->getCategoryIds());
}

Но строка addIdFilter (array (4,5)) не работает, и я вижу все продукты, даже если их нет в некоторых категориях.

Что не так?

Ответы [ 2 ]

2 голосов
/ 04 июля 2010

попробуйте передать строку с идентификаторами, разделенными запятыми:

->addIdFilter("4,5")

Если это не работает, вы всегда можете попробовать:

->addAttributeToFilter(’id’, array('in' => array(4,5))) 
0 голосов
/ 16 сентября 2013

Это помогло мне:

        $collection = $category->getCollection();
    /* @var $collection Mage_Catalog_Model_Resource_Category_Collection */
    $collection->addAttributeToSelect('url_key')
        ->addAttributeToSelect('name')
        ->addAttributeToSelect('all_children')
        ->addAttributeToSelect('is_anchor')
        ->addAttributeToFilter('is_active', 1)
        ->addIdFilter($category->getChildren())
        ->setOrder('position', Varien_Db_Select::SQL_ASC)
        ->joinUrlRewrite()
        ->load();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...