【问题标题】:Display Magento Custom Option Values in Shoping Cart在购物车中显示 Magento 自定义选项值
【发布时间】:2012-08-16 17:24:04
【问题描述】:

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

【问题讨论】:

  • 使用会话保存自定义选项并将其放入购物车。

标签: php magento e-commerce


【解决方案1】:

要在“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
    }
}

【讨论】:

  • thnx rakesh 这真的是救命稻草
  • 我们如何获得价格?
  • 如何获取特定客户?
  • 如何获得期权价格?
【解决方案2】:

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

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

【讨论】:

【解决方案3】:

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

【讨论】:

  • 应该是公认的答案,Magento方式的简单和最佳用法
【解决方案4】:

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

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

你会发现选项值

【讨论】:

  • 我将此代码放在我的循环中:default/template/checkout/cart/item/default.phtml,它除了切断剩余的产品之外什么也没做。
  • 尝试在 default/template/checkout/cart/item/default.phtml 中找到此代码 $_options = $this->getOptionList() 以获取购物车页面中产品的选定选项。
【解决方案5】:

使用以下代码加载产品:

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

然后用这个获取自定义选项:

$options = $product->getProductOptions();

希望对您有所帮助,

逾越节

【讨论】:

  • 我在 cart.pthml 中有它,但它没有在前端显示选项:&lt;th width="200" rowspan="&lt;?php echo $mergedCells; ?&gt;"&gt;&lt;span class="nobr"&gt;&lt;?php echo $this-&gt;__('Product Name') ?&gt; &lt;?php $product = Mage::getModel('catalog/product')-&gt;load($product_id); $options = $product-&gt;getProductOptions(); ?&gt; &lt;/span&gt; &lt;/th&gt;
  • 可能需要回显
  • 产品选项默认显示在购物车页面
  • 在 .phtml 文件中的哪个位置被调用?我没看到
  • 不是你要添加它(我假设我误解了你的问题)
猜你喜欢
  • 1970-01-01
  • 2013-05-10
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
  • 2015-05-01
相关资源
最近更新 更多