我们为我们的产品制作了一个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
的所有简单产品过滤掉可配置产品如果有人得到答案会很好,因为我们没有看到解决方案。
答案 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));