如何检查产品有自定义选项?

时间:2015-04-04 10:19:09

标签: magento-1.8

我试图检查产品是否在代码中有自定义选项(我的代码运行sales_order_place_after事件)。 我尝试下面的代码,但它没有返回任何东西。 $product->hasCustomOptions()$product->hasOptions()

请让我知道我错过了什么。

2 个答案:

答案 0 :(得分:14)

我遇到这个错误的次数比我想算的多。 $_product->hasOptions()$_product->hasCustomOptions()始终返回false。我仍然不知道为什么会出现这种错误。

无论如何,您可以通过执行以下操作获得相同的结果。对于可配置产品:

<?php if ( $_product->getData('has_options') ): ?>
    <!-- do something -->
<?php endif; ?>

使用自定义选项获得与简单产品相同的结果:

<?php if ( $_product->getData('has_options') && ($_product->getTypeID() == 'simple') ): ?>
    <!-- do something -->
<?php endif; ?>

我希望这有助于未来的冒险家!

修改

当在Magento中启用平面类别数据选项时,上面的解决方案在循环中不起作用,我们不想在foreach循环中重新加载产品!!

相反,我们可以在循环中使用以下单例来检查自定义选项:

$opts = Mage::getSingleton('catalog/product_option')->getProductOptionCollection($_product);
$optsSize = $opts->getSize();

if ( $optsSize ) {
    ... // go go go
}

答案 1 :(得分:5)

使用方法$product->getHasOptions()