繁体   English   中英

Magento-如何在购物车中的产品中添加或删除自定义选项?

[英]Magento - How can I add or remove a custom option from a product in the cart?

我正在尝试从购物车中的产品添加或删除自定义选项。 自定义选项是在后端针对产品本身定义的,我并不是试图动态地组成一个新的自定义选项或类似的东西。 我的所有自定义选项都是单个复选框,以防万一。

我在checkout_cart_update_items_after上使用观察器,并通过Mage::getSingleton('checkout/session')->getQuote()->getAllItems()循环。 我可以看到当前使用哪个选项选择了自定义选项

$orderOptions = $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());
if ( isset($orderOptions['info_buyRequest']['options']) )
    // cart item has options selected.

首先,我真的很希望能够删除这些自定义选项。 我希望能够找到类似$item->removeOption($optionId);东西$item->removeOption($optionId); ,但我找不到任何方法。

在第二种情况下,我真的很希望能够向项目添加自定义选项。 我已经尝试过各种方法来做到这一点,包括$item->addOption(array('code'=>$optionCode, 'value'=>1));

我都无法上班,而且我确定我只是缺少一些非常简单的东西。 你能帮我吗?

如果要在报价项目上即时指定自定义产品选项(例如:在订单中为每种产品添加交货日期),则可以使用观察者来添加自定义选项。

例:

<controller_action_predispatch_checkout>
<observers>
<options_observer>
<class>YOUR_CLASS_NAME</class>
<method>setProductInfo</method>
</options_observer>
</observers>
</controller_action_predispatch_checkout>


$deliveryDate = $prId['delivery_date'];
if (!empty($deliveryDate)) {
$opt['options'] = array($optionID => $deliveryDate);
$request->setParams($opt);
}
return $this;

添加选项的另一种方法是

$item->addOption(array(
    'code' => 'additional_options',
    'value' => serialize($additionalOptions),
));

假设您有以下选择

$option = array(
    'title' => 'Auto Date & Time',
    'type' => 'date_time',
    'is_require' => 1,
    'sort_order' => 0,
    'is_delete' => '',
    'previous_type' => '',
    'previous_group' => '',
    'price' => '0.00',
    'price_type' => 'fixed',
    'sku' => ''
);

直接获取$product->getOptionInstance()

$product->getOptionInstance()->addOption($option);

$product->setHasOptions(true); //mention that the product has custom options

删除自定义选项:

if($product->getOptions() != ''{
  foreach ($product->getOptions() as $opt){
     $opt->delete(); 
   } 
 $product->setHasOptions(0)->save();
}

希望能帮助到你 !!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM