【问题标题】:Display only in stock options for configurable products on catalog pages in Magento仅在 Magento 目录页面上可配置产品的库存选项中显示
【发布时间】:2012-01-16 06:31:04
【问题描述】:

我已经成功地使用以下代码在我的目录页面上为可配置产品添加了选项:http://www.magentocommerce.com/boards/viewthread/21039/P45/#t167724。我现在想做的只是根据选项来自的简单产品的库存显示可用的选项。

例如,如果我的 T 恤(可配置产品)有多种颜色(简单产品),而我的红色已缺货,那么在显示可配置产品时,红色将不会作为选项显示。

最好的方法是什么?

更新: 为了清楚起见,这里是我发布的链接中的相关代码块。

<?php if($product->getTypeId() == "configurable"): ?>
    <?php $attValConfig = $product->getTypeInstance()->getConfigurableAttributesAsArray(); ?>
    <?php if(sizeof($attValConfig)): ?>
        <?php foreach($attValConfig as $attValConfigSingle): ?>
            <fieldset class="product-options" id="product-options-wrapper">
                <label><?php echo $attValConfigSingle['label']; ?>:</label>
                <select name="super_attribute[<?php echo $attValConfigSingle['attribute_id'] ?>]" id="attribute<?php echo $_product->getId() ?>" class="required-entry super-attribute-select">
                    <?php foreach($attValConfigSingle['values'] as $attValConfigSingleVal): ?> 
                        <option value="<?php echo $attValConfigSingleVal['value_index'] ?>"><?php echo $attValConfigSingleVal['label'] ?></option>
                    <?php endforeach; ?>
                </select>
            </fieldset>
        <?php endforeach; ?>
    <?php endif; ?>
<?php endif; ?>

由于此代码只是获取所有可配置选项并显示它们,因此它不会检查支持可配置选项的简单产品是否有库存。我该怎么做?

【问题讨论】:

标签: magento


【解决方案1】:

我只是想知道为什么我们要检查库存状态的数量为什么我们不查看简单产品的库存情况。

我已经实现了根据库存状态显示可配置产品的缺货。 现在您可以通过简单产品的库存可用性属性使产品“缺货”和“有货”。

【讨论】:

    【解决方案2】:

    尝试以下(做你想要的返回结果):

    $_productCollection = Mage::getModel('cataloginventory/stock_item')->getCollection()
        ->addIdFilter($productId) // this line is wrong, don't care this
        ->addFieldToFilter('qty', array('gteq' => 1));
    

    【讨论】:

    • 您提供的代码有问题。首先,addIdFilter 似乎不是 Mage_CatalogInventory_Model_Resource_Stock_Item_Collection 上的有效方法。其次,调用Mage::getModel('cataloginventory/stock_item')-&gt;getCollection() 似乎没有返回任何项目。有什么想法吗?
    • @Luke 我觉得你做错了,请看下面的链接:How to show out of stock configurable options
    • 或者试试这个:Mage::getModel('cataloginventory/stock_item')-&gt;loadByProduct($_product)-&gt;getQty()
    • 您发布的代码似乎假设我已将简单产品加载到 $_product 中,但事实并非如此。请参阅我更新的问题。感谢您的帮助。
    猜你喜欢
    • 2011-07-08
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2013-01-29
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多