跨境电商
经验交流分享

Magento调用产品自定义选项

最近一个项目中,客户需求在Magento中实现一款Buy Together的功能,通过整合Related Product之后实现起来相当简单。然而熟悉Magento的用户都知道,如果相关产品包含自定义选项,如尺寸、颜色的话,系统会做如下提示。

Please specify the product required option(s)

在添加多个产品的时候,magento会调用cart模型中的addProductByIds()方法,该方法没有传递request_info给quote中的addProduct(),所以会出现上述提示。为了能够方便用户更快捷的下单,增强buy together的用户体验。需要给有自定义选项的产品添加一个弹出层,用于选择自定义选项。

代码相当简单,在catalog.xml文件中都可以找到圆形。

[php]
class Ruiwant_Tpcore_Helper_Data extends Mage_Core_Helper_Abstract
{
public function getProductOptionsHtml(Mage_Catalog_Model_Product $product)
{
$blockOption = Mage::app()->getLayout()->createBlock("Mage_Catalog_Block_Product_View_Options");
$blockOption->addOptionRenderer("default","catalog/product_view_options_type_default","catalog/product/view/options/type/default.phtml");
$blockOption->addOptionRenderer("text","catalog/product_view_options_type_text","catalog/product/view/options/type/text.phtml");
$blockOption->addOptionRenderer("file","catalog/product_view_options_type_file","catalog/product/view/options/type/file.phtml");
$blockOption->addOptionRenderer("select","catalog/product_view_options_type_select","catalog/product/view/options/type/select.phtml");
$blockOption->addOptionRenderer("date","catalog/product_view_options_type_date","catalog/product/view/options/type/date.phtml") ;
$blockOptionsHtml = null;
if($product->getTypeId()=="simple"||$product->getTypeId()=="virtual"||$product->getTypeId()=="configurable")
{
$blockOption->setProduct($product);
if($product->getOptions())
{
foreach ($product->getOptions() as $o)
{
$blockOptionsHtml .= $blockOption->getOptionHtml($o);
};
}
}

return $blockOptionsHtml;
}
}
[/php]

上边的getProductOptionsHtml()方法位于tpcore/data助手类中,参数为产品对象。通过如下方式,可以在模板中调用。

[php]
echo Mage::helper("tpcore")->getProductOptionsHtml(Mage::getModel("catalog/product")->load($_item->getId()));
[/php]

赞(0)
未经允许不得转载:锐想 » Magento调用产品自定义选项
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

锐想电商 - 跨境电商经验交流分享

锐想无限