我已经创建了直接保存到我checkout_cart_product_add_after
中的引用项的属性Observer方法不会保留该值,因为它似乎在Observer退出后恢复。
请参阅以下代码示例:
config.xml(摘录):
<checkout_cart_product_add_after>
<observers>
<module>
<type>model</type>
<class>NativeRemedies_OrderGroove_Model_Observer</class>
<method>productAddAfter</method>
</module>
</observers>
</checkout_cart_product_add_after>
Observer.php(摘录):
public function handleOrderGroove()
{
foreach($this->og->products as $_product){
if($_product->every>0){
foreach($this->_quote->getAllVisibleItems() as $_item){
//if sku is in the active list of recurring products selected add quote item id to array
if($_item->getSku()==$_product->id){
Mage::helper('nrordergroove')->setRecurringItem($_item->getItemId());
$_item->setOrdergrooveActive(true)->save();
$_item->getProduct()->setPrice(2);
$_item->setCustomPrice(2);
$_item->setOriginalCustomPrice(2);
$_item->getProduct()->setIsSuperMode(true);
}
}
} // else, do nothing
}
此示例中的$ _item对象未提供保留设置属性的工具 - 即使在调用->save()
时也是如此。
提前感谢您的帮助。我已经看过所有关于设置自定义价格和属性的教程 - 似乎没有什么能够解决这个问题!
我开始觉得这是1.6+中的一个错误。我已经看到很多关于这个工作的讨论在&gt; = 1.4。
为了绝对清楚,这里的问题是Product Model属性被Product Model或collectTotals方法有效覆盖。我需要一个解决方法。
答案 0 :(得分:1)
事实上,我在这里的工作代码确实起作用了。与Amasty特别促销活动的延期冲突导致定制定价未被设定。这被测试为使用以下Magento版本:
答案 1 :(得分:0)
以下是您的问题的答案,是的,这是在较新版本的Magento 1.5 +中:
当签出项目从报价转换为订单时,您的属性将丢失。
您需要添加与此观察者类似的内容,以便在结帐时保留您的属性:
<sales_convert_quote_item_to_order_item>
<observers>
<extra_options>
<type>model</type>
<class>extra_options/observer</class>
<method>salesConvertQuoteItemToOrderItem</method>
</extra_options>
</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 - Quote/order product item attribute based on user input