Php Magento列出所有可配置产品,简单的产品缺货

时间:2013-01-11 14:07:44

标签: php magento filter

我们为我们的产品制作了一个xml文件,但我们遇到了问题。

在我们的Magento商店中,如果简单产品的数量为0,所有可配置产品都会有库存。我们的管理/库存系统需要此功能。我们有一个过滤器套件可以过滤掉所有没有库存的产品(见下文)。现在我们还需要一个有库存的可配置产品的过滤器,但是简单的产品缺货并且数量为0.

过滤不显示缺货产品

->joinField('is_in_stock',
                'cataloginventory/stock_item',
                'is_in_stock',
                'product_id=entity_id',
                'is_in_stock=1',
                '{{table}}.stock_id=1',
                'left');

        $products->addAttributeToFilter('is_in_stock', array('eq' => 1));

所以例子:

Configurable product: is in stock
Simple 1, simple 2, simple 3: are out of stock

我们需要使用状态缺货或qty0

的所有简单产品过滤掉可配置产品

如果有人得到答案会很好,因为我们没有看到解决方案。

1 个答案:

答案 0 :(得分:4)

这是一个脚本,您可以使用该脚本找到所有那些没有库存简单的配置。然后,您可以使用该数组ID来将它们排除在过滤器中。

<?php
require_once('app/Mage.php');
umask(0);
Mage::app();

$collectionConfigurable = Mage::getResourceModel('catalog/product_collection')->addAttributeToFilter('type_id', array('eq' => 'configurable'));

$outOfStockConfis = array();
foreach ($collectionConfigurable as $_configurableproduct) {
    $product = Mage::getModel('catalog/product')->load($_configurableproduct->getId());
    if (!$product->getData('is_salable')) {
       $outOfStockConfis[] = $product->getId();
    }
}

然后使用此功能删除您的收藏中无法销售的可配置产品:

$products->addAttributeToFilter('entity_id',array('nin' => $outOfStockConfis));