$ product-> getOptions()返回空结果


9

我试图在我创建的自定义模块中获取包括产品自定义选项值在内的产品详细信息。这是我在产品详细信息页面上使用的代码,它在这里起作用,但是当尝试在自定义模块页面上使用时,get Options返回空值。

如果($ _product-> getId()){  
    foreach($ _product-> getOptions()as $ opt){  
    echo $ optionType = $ opt-> getType();  
      如果($ optionType =='drop_down'){  
        $ values = $ opt-> getValues();  
        foreach($ values为$ v)
        {
     $ mydata = $ v-> getTitle();      
print_r($ mydata);    
        }
      }  
    }   
}

我是magento的新手,所以不确定我在这里错过了什么。
有人可以给我一个提示吗,
谢谢


从相关主题中查看此答案
quickshiftin

Answers:


2

尝试这个:

if (Mage::registry('current_product')) {
    $product = Mage::registry('current_product');
} else {
    $product = Mage::getSingleton('catalog/product');
}


if ($product->getId()) {
    if ($product->hasCustomOptions()) {
        foreach ($product->getOptions() as $option) {
            $optionType = $option->getType();
            if ($optionType == 'drop_down') {
                $values = $option->getValues();
                foreach ($values as $k => $value) {
                    print_r($value);
                }
            }

        }
    }
}

1
无法正常工作...当我打印$ prodct数组时,除自定义选项外,所有信息都在显示,而相同的代码在产品视图页中正常运行
Shivika Sharma

2

问题在于该产品未完全装入您的模块中。该load()方法确保对象的所有信息都已加载。如果仅使用loadByAttribute()或集合,则不是这种情况。

一个例子是:

$product = Mage::getModel('catalog/product')->load($productId);

如果要显示多个产品,则应避免使用load()尽管如此,因为它会对性能产生很大的负面影响。很抱歉,我无法为您添加选项到集合中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.