2013-12-20 3 views
1

My Magento версия -> 1.6.2Magento: изменение цены продукта, получая товар с идентификатором

Я использую внешний файл PHP, который принимает параметр $product_id и $my_price с помощью JQuery пост.

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 -add-to-cart эта ссылка поможет вам –

ответ

2

Вы должны создать наблюдателя, который ловит событие add-to-cart sales_quote_add_item, а затем вы можете делать php-материал в наблюдателе, чтобы изменить цену только для этого продукта с помощью $ 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 –

Смежные вопросы