1

我们为我们的产品制作了一个 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

我们需要过滤掉所有状态为 out of stock 或 qty0 的简单产品的可配置产品

如果有人有答案,那就太好了,因为我们只是看不到解决方案。

4

1 回答 1

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));
于 2013-01-11T15:16:39.500 回答