Magento : Add Product to cart with custom price
首先我正在开发自定义价格的扩展,并且我在产品页面上有一个输入,这是描述我所做的图像:
当客户输入他想要的价格并点击添加到购物车时,必须使用他添加的价格添加产品。
我知道可以在控制器中编码,但我不知道如何?
这是控制器空类:
1 2 3 4 5 | <?php class WebDirect_CustomPrice_savePriceController extends Mage_Core_Controller_Front_Action{ //put your code here } |
任何人都知道添加到购物车按钮的工作原理(代码)
你需要为它调用 final_price 观察者。需要遵循以下步骤:
1 在etc/config.xml中添加观察者
1 2 3 4 5 6 7 8 9 10 11 | <events> <catalog_product_get_final_price> <observers> <xyz_catalog_price_observer> <type>singleton</type> <class>Xyz_Catalog_Model_Price_Observer</class> <method>apply_customprice</method> </xyz_catalog_price_observer> </observers> </catalog_product_get_final_price> </events> |
在你的模型中添加方法 apply_customprice()
1 2 3 4 5 6 7 8 | public function apply_customprice($observer) { $event = $observer->getEvent(); $product = $event->getProduct(); // ADDD LOGIC HERE to get price added by customer $product->setFinalPrice($specialPrice); // set the product final price return $this; } |
点击下方喜欢的地方,您可以找到将产品添加到购物车时如何设置自定义价格。
http://www.magentocommerce.com/wiki/5__-_modules_and_development/0__-_module_development_in_magento/customizing_magento_using_event-observer_method
作为起点,您可以从:
1 2 3 4 5 6 7 8 9 10 11 | class Mage_Checkout_CartController extends Mage_Core_Controller_Front_Action { /** * Add product to shopping cart action * * @return Mage_Core_Controller_Varien_Action * @throws Exception */ public function addAction() { |
确保您覆盖添加到购物车的路线以指向您的路线(覆盖上述核心路线的新路线)。
从用户输入中获取价格也会影响结帐过程,特别是报价和由此产生的所有内容(购物车、订单等)。
另外,关于单页结帐要小心,因为 BE 逻辑和 opcheckout.js 非常紧密。
切尔斯