2012-08-16 126 views
0

我的Magento网站上的一些产品具有自定义选项(不属性)。对于一种产品有黄金或白银可供选择,它有一个下拉这两个选项。 如何获取用户选择显示在购物车页面上的产品名称旁边的选项名称?在购物车中显示Magento自定义选项值

+0

使用会话保存自定义选项并将其存入购物车。 – Kalpesh 2012-08-20 09:59:46

回答

0

负载使用下面的代码的产品:

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

,然后让这个自定义选项:

$options = $product->getProductOptions(); 

希望这是有帮助的,

逾越节

+0

我在cart.pthml中使用它,它不在前端显示选项:'”><? php echo $ this - > __('Product Name')?> <?php $ product = Mage :: getModel('catalog/product') - > load($ product_id); $ options = $ product-> getProductOptions(); ?> ' – 2012-08-16 18:29:49

+0

也许它需要回显出来 – pzirkind 2012-08-16 20:01:32

+0

产品选项是默认 – Mufaddal 2012-08-17 05:30:00

1

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

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

你会发现期权价值

+0

我把这段代码放在我的循环中:default/template/checkout/cart/item/default.phtml,除了切断剩余的产品外,它什么也没做。 – 2012-09-05 23:43:05

+1

尝试在默认/ template/checkout/cart/item/default.phtml中找到此代码$ _options = $ this-> getOptionList(),这会为您的购物车页面中的产品提取选定的选项。 – Mufaddal 2012-09-06 06:24:37

4

使用下面的代码,你可以得到的产品定制选项的值。

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

这是为了简单的产品选项,而不是可配置的产品正确吗? – 2012-09-05 23:43:27

+0

我认为这是属性不是选项 – 2012-09-05 23:47:05

+0

你好Sam试试这可能对你有帮助! http://www.magentocommerce.com/boards/viewthread/65107/或http://www.richardcastera.com/blog/magento-add-a-product-with-custom-options-to-the-cart-through -url-querystring – drsndodiya 2012-09-06 05:03:34

7

要获取它们被设置为“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 
    } 
} 
+0

thnx rakesh这真的是救生员 – 2015-03-04 14:16:01

+1

我们怎么能得到价格? – 2016-04-20 10:14:15

+0

如何获得特定客户? – 2016-12-21 13:09:54

2

如果选择Mage_Catalog_Model_Product_Type_Configurable :: getOrderOptions($产品)去了别人的建议,确保你不把它在禁用产品作为版本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); 
} 

(注:$选项将是一个空数组,如果该项目没有选项)

+0

应该是被接受的答案,Magento方式的简单和最佳用法 – ehretf 2017-08-01 14:48:38

相关问题