【发布时间】:2012-08-16 17:24:04
【问题描述】:
我的 Magento 网站上的一些产品具有自定义选项(不是属性)。对于一种产品有金色或银色可供选择,它有一个带有这两个选项的下拉菜单。 如何获取用户选择显示在购物车页面上产品名称旁边的选项名称?
【问题讨论】:
-
使用会话保存自定义选项并将其放入购物车。
标签: php magento e-commerce
我的 Magento 网站上的一些产品具有自定义选项(不是属性)。对于一种产品有金色或银色可供选择,它有一个带有这两个选项的下拉菜单。 如何获取用户选择显示在购物车页面上产品名称旁边的选项名称?
【问题讨论】:
标签: php magento e-commerce
要在“AddtoCart”时间设置的购物车页面获取产品自定义选项值,请尝试使用以下代码。
$cart = Mage::helper('checkout/cart')->getCart()->getQuote()->getAllItems();
/* cart item loop */
foreach($cart as $item) {
/* This will get custom option value of cart item */
$_customOptions = $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());
/* Each custom option loop */
foreach($_customOptions['options'] as $_option){
echo $_option['label'] .'=>'. $_option['value']."<br/>";
// Do your further logic here
}
}
【讨论】:
使用以下代码,您可以获得产品自定义选项值。
$productOptions= $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());
【讨论】:
如果您按照其他人的建议选择使用 Mage_Catalog_Model_Product_Type_Configurable::getOrderOptions($product),请确保不要在 CE 1.9 版中调用它。*(可能在其他版本也是如此)这会导致对 null 的讨厌的函数调用。除非您没有添加从购物车中清除已禁用产品的自定义模块,否则对于将后来已禁用产品添加到其购物车的每个客户,这可能会使您的网站崩溃。
幸运的是,如果您正在使用或扩展 Magento 的购物车项目渲染器 Mage_Checkout_Block_Cart_Item_Renderer,则无需担心这一点。它提供了 getOptionList() 方法,它将向您返回所有选定选项的数组,包括自定义选项:
//$this = Mage_Checkout_Block_Cart_Item_Renderer
$options = $this->getOptionList();
此方法 getOptionList() 调用 Mage_Catalog_Helper_Product_Configuration 如果您不使用 Magento 渲染器或如果您想要仅自定义选项列表,这将是您的答案。
这是一个示例,说明如何通过直接调用帮助程序来获取所选自定义选项的数组:
$_item = $this->getItem(); // item can represent a simple, configurable or grouped product
$helper = Mage::helper('catalog/product_configuration');
if($onlyCustomOptions){
// get an array of only custom options
$options = $helper->getCustomOptions($_item);
} else {
// get an array of configurable & custom options
$options = $helper->getOptions($_item);
}
(注意:如果项目没有选项,$options 将是一个空数组。)
【讨论】:
如果不显示,那么你应该试试这个。
$product = Mage::getModel('catalog/product')->load($product_id);
$options = $product->getProductOptions();
foreach ($options as $option){ print_r($option->getValues()); }
你会发现选项值
【讨论】:
使用以下代码加载产品:
$product = Mage::getModel('catalog/product')->load($product_id);
然后用这个获取自定义选项:
$options = $product->getProductOptions();
希望对您有所帮助,
逾越节
【讨论】:
<th width="200" rowspan="<?php echo $mergedCells; ?>"><span class="nobr"><?php echo $this->__('Product Name') ?> <?php $product = Mage::getModel('catalog/product')->load($product_id); $options = $product->getProductOptions(); ?> </span> </th>