オブザーバー メソッドで見積もりアイテムに直接保存する属性を作成しました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
はっきりさせておくと、ここでの問題は、Custom Pricing 属性が Product モデルまたは collectTotals メソッドによって効果的に上書きされていることです。回避策が必要です。