我尝试以编程方式将自定义选项添加到产品中,然后将其添加到购物车中。我用的是:
$a_options = array(
'options' => array(
'label' => 'Glove Size',
'value' => $attr_value ,
)
);
$item->addOption(new Varien_Object(
array(
'product' => $item->getProduct(),
'code' => 'additional_options',
'value' => serialize($a_options)
)
));
$quote->addItem($item);
这是购物车和结帐过程中产品的显示选项,但不显示订单信息中的选项。 我也尝试过:
$item->getProduct()->addCustomOption('additional_options', $attr_value );
尝试通过属性显示它们 - 没有帮助。
$params = array('product' => '1919','qty' => 1,
'options' => array(
'glove_size' => $gloves_id,
),);
$cart->addProduct('1919', $params);
Magento版本为1.5
答案 0 :(得分:6)
我没有检查1.5版本,但下面的代码将在1.7.2版本中运行:
要查看自定义选项,您需要在订单商品中设置选项。可以通过调用事件 sales_convert_quote_item_to_order_item
来完成<sales_convert_quote_item_to_order_item>
<observers>
<jrb_setcustomoption_observer>
<type>singleton</type>
<class>jrb_setcustomoption/observer</class>
<method>salesConvertQuoteItemToOrderItem</method>
</jrb_setcustomoption_observer>
</observers>
</sales_convert_quote_item_to_order_item>
在观察者中设置详细信息选项
public function salesConvertQuoteItemToOrderItem(Varien_Event_Observer $observer)
{
$quoteItem = $observer->getItem();
if ($additionalOptions = $quoteItem->getOptionByCode('additional_options')) {
$orderItem = $observer->getOrderItem();
$options = $orderItem->getProductOptions();
$options['additional_options'] = unserialize($additionalOptions->getValue());
$orderItem->setProductOptions($options);
}
}
有关详细信息,请参阅本文: Magento - custom product option don't show in order
感谢 Vinai