在购物车中显示Magento自定义选项值

时间:2012-08-16 17:24:04

标签: php magento e-commerce

我的Magento网站上的一些产品有自定义选项(不是属性)。如果有一种产品有金色或银色可供选择,那么它有两种选择。 如何获取用户选择在购物车页面上的产品名称旁边显示的选项的名称?

5 个答案:

答案 0 :(得分:9)

要在购物车页面获取设置为“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
    }
}

答案 1 :(得分:4)

使用以下代码,您可以获得产品自定义选项值。

$productOptions= $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());

答案 2 :(得分:2)

如果您选择按照其他人的建议使用 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将为空数组。)

答案 3 :(得分:1)

如果没有显示,那么你应该试试这个。

$product = Mage::getModel('catalog/product')->load($product_id);
$options = $product->getProductOptions();
foreach ($options as $option){ print_r($option->getValues()); }

您会找到选项值

答案 4 :(得分:0)

使用以下代码加载产品:

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

然后获取自定义选项:

$options = $product->getProductOptions();

希望这很有帮助,

逾越节