我在我的checkout_cart_product_add_after
观察者方法中创建了直接保存到报价项的属性,不会保留该值,因为它似乎在观察者退出后被还原。
请参阅下面的代码示例:
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
我开始觉得这是 1.6+ 中的错误。我在 >=1.4 中看到了很多关于这个工作的讨论。
编辑 2
绝对清楚,这里的问题是自定义定价属性被 Product 模型或 collectTotals 方法有效地覆盖。我需要一个解决方法。