2013-12-20 248 views
1

我的Magento的版本 - > 1.6.2Magento的:更改產品的價格通過讓產品編號

我使用通過jQuery後接收$product_id$my_price參數外部php文件。

var priceNewValue = XX; // My custom price value 
var product_id = optionsPrice.productId; // Product id 

jQuery.post("http://flyingcakes.in/eshop/ajaxPriceCal.php", { price: priceNewValue, pid: product_id }); 

在我的 「ajaxPriceCal.php」 頁面,我趕上值:

$product_id = $_POST['pid']; 
$my_price = $_POST['price'];  

現在我想Magento的設置本產品($product_id)等於$my_price的價格。 因此:

  1. 當產品添加到購物車時,會反映此更改的價格。
  2. 該產品的價格只是暫時更改,即沒有保存到數據庫。

我該怎麼做?

+1

你不能做到這樣,你必須創建爲http://magento.stackexchange.com/questions/4318/dynamically-calculated-prices-save-before一個模塊 - 添加到購物車此鏈接可幫助您 –

回答

2

您必須構建一個觀察器來捕獲add-to-cart事件sales_quote_add_item,然後您可以在觀察器中執行php-stuff以僅使用$ observer-> getEvent() - >更改此產品的價格。 getQuoteItem() - > setOriginalCustomPrice([您的價格])。

其在本頁面上有更詳細的解釋:Changing the price in quote while adding product to cart: magento

這個工作對我來說...

+0

我確認您應該使用此類解決方案。如何使用Ajax調用?什麼是使用特殊價格的條件?你不能只考慮使用觀察者(添加到購物車事件)。 – dagfr

+0

@gerard謝謝!我可以問,有沒有什麼方法可以告訴Observer.php設置一個與我在前端使用Jquery計算的值相等的價格?我的意思是,我想將價格的價值傳遞給觀察者,而不是在observer.php中進行計算,因爲價格的價值取決於客戶通過下拉框和複選框選擇的內容。 –

+0

@dagfr不,Ajax調用不起作用。 –

0

你需要下載該產品爲 -

$_product=Mage::getModel('catalog/product')->load($product_id); 
$_product->setPrice($my_price); 
$_product-Save(); 

希望這會幫助你。

+2

此代碼也可以更改數據庫中的價格..您無法執行此操作 –

+0

爲此您必須設置物品對象的價格而不是$ _product –