【问题标题】:Magento: Change product price by getting product idMagento:通过获取产品 ID 更改产品价格
【发布时间】:2013-12-20 08:18:37
【问题描述】:

我的 Magento 版本 -> 1.6.2

我正在使用一个外部 php 文件,该文件通过 jQuery post 接收 $product_id$my_price 参数。

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. 产品价格只是临时更改,即未保存到数据库中。

我应该怎么做?

【问题讨论】:

标签: php jquery magento


【解决方案1】:

您必须构建一个观察者来捕获添加到购物车事件 sales_quote_add_item,然后您可以在观察者中执行 php-stuff 以使用 $observer->getEvent()->getQuoteItem 仅更改此产品的价格()->setOriginalCustomPrice([你的价格])。

在此页面上有更详细的解释:Changing the price in quote while adding product to cart: magento

这对我有用...

【讨论】:

  • 我确认您应该使用这种解决方案。如何使用 Ajax 调用?使用特价的条件是什么?您不能考虑只使用观察者(在添加到购物车事件中)。
  • @gerard 谢谢!我可能会问,有什么方法可以告诉 Observer.php 设置的价格等于我在前端使用 Jquery 计算的价格?我的意思是,我想将价格的值传递给观察者,而不是在observer.php 中计算它,因为价格的值取决于客户通过下拉菜单和复选框选择的内容。
  • 出于安全原因,我不建议将 javascriptprice 发送给观察者并使用该值作为价格。它可能是可操纵的。最好在 PHP 中计算它并使用 Ajax 在前端获取价格,而不是像你想要的那样反过来做。
【解决方案2】:

您需要将产品加载为 -

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

希望这会对你有所帮助。

【讨论】:

  • 为此,您必须设置项目对象的价格而不是 $_product
猜你喜欢
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多