我试图检查产品是否在代码中有自定义选项(我的代码运行sales_order_place_after
事件)。
我尝试下面的代码,但它没有返回任何东西。
$product->hasCustomOptions()
和
$product->hasOptions()
请让我知道我错过了什么。
答案 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()