如何从特定类别中启用和禁用所有产品?

ati*_*tif 4 magento magento-1.6

我正在尝试获取所有启用和禁用的产品,我正在使用此代码:

/*$categoryId = 3; // a category id that you can get from admin
    $category = Mage::getModel('catalog/category')->load($categoryId);

    $collection = Mage::getModel('catalog/product')
                    ->getCollection()
                   ->addCategoryFilter($category)
                    ->addAttributeToSelect('*')
                    ->addAttributeToFilter('status', array('gt' => 0))
                    ->load();

$categoryId = 3; // a category id that you can get from admin
    $category = Mage::getModel('catalog/category')->load($categoryId);*/
Run Code Online (Sandbox Code Playgroud)

以上代码仅提供启用的产品.

通过评论状态过滤器,它仍然会带来相同的结果,即仅启用产品.

    /*$collection = Mage::getModel('catalog/product')
                    ->getCollection()
                   ->addCategoryFilter($category)
                    ->addAttributeToSelect('*')
                    //->addAttributeToFilter('status', array('gt' => 0))
                    ->load();*/
Run Code Online (Sandbox Code Playgroud)

它仍然只带来Enabled产品.但当我评论类别检查比它带来n所有产品 :(任何人都可以帮助PLZ?

注意:

对于那些不清楚这个查询的人,让我告诉你Status Enabled = 1Status Disabled = 2.

所以大于零的状态应该给我带来启用和禁用的产品,但它没有这样做.所以任何想法???

我编辑代码和它

$collection = Mage::getModel('catalog/category')->load(3)
                    ->getProductCollection()
                    ->addAttributeToSelect('*')
                    ->addAttributeToSort('entity_id', 'ASC');

die((string) $collection->getSelect());
Run Code Online (Sandbox Code Playgroud)

这带来了这个查询:

SELECT `e`.*, `cat_index`.`position` AS `cat_index_position` FROM `catalog_product_entity` AS `e` INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=1 AND cat_index.category_id='3' ORDER BY `e`.`entity_id` ASC
Run Code Online (Sandbox Code Playgroud)

Mil*_*nić 8

我发现为什么会这样.

这是因为当您想要从类别中获取产品$productCollection->addCategoryFilter()或使用$category->getProductCollection()查询时使用产品到类别连接INDEX表.当您运行重新索引时,产品类别连接INDEX表仅使用已启用的产品填充,并且您无法以此方式获得禁用的产品.这是Magento中的错误,我不知道,您可以使用Raw SQL查询从特定类别获取您的产品.