【问题标题】:Magento : Add Product to cart with custom priceMagento:以自定义价格将产品添加到购物车
【发布时间】:2014-03-25 10:18:27
【问题描述】:

首先我正在开发自定义价格的扩展,我在产品页面上有一个输入,这是一张描述我所做的图片:

当客户输入他想要的价格并点击添加到购物车时,必须使用他添加的价格添加产品。

我知道可以在控制器中编码,但我不知道如何?

这是控制器空类:

<?php

class WebDirect_CustomPrice_savePriceController extends Mage_Core_Controller_Front_Action{
    //put your code here
}

任何人都知道添加到购物车按钮的工作原理(代码)

【问题讨论】:

  • 请发布您的其余代码,当客户单击添加到购物篮时,您的控制器中的哪个方法被调用以及您也可以访问哪些值? (即定制价格)。可以做您想做的事,但首先要让基础工作正常(即,实际上首先以正常价格将产品添加到购物车)。一旦你开始工作,看看这篇我之前解释过如何做到这一点的帖子:stackoverflow.com/questions/20949796/…
  • 另外,我可能会尝试使用观察者而不是全新的自定义控制器来执行此操作,并更改许多 magento 默认行为。想想未来的升级:-)
  • @AshleySwatton 如果是这样,那么如何与观察者一起做到这一点?扩展不会修改核心,这就是我想要的?

标签: magento


【解决方案1】:

您需要为此调用 final_price 观察者。需要遵循以下步骤:

1 在 etc/config.xml 中添加观察者

<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>
  1. 在你的模型中添加方法 apply_customprice()

     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

【讨论】:

  • 顺便问一下xyz是什么命名空间或模块名?
  • 价格变了,但我不想画正常价格
  • 我第一次尝试过这个magentotutorial.org/… 但没有用
  • 你在magento中是否有知识事件观察者,所以你可以很容易地理解它。如果您仍然有问题,请给我发电子邮件,我很乐意解决。
  • 不,我知道观察者是如何工作的,但你可以看到第二个问题stackoverflow.com/questions/22638328/…
【解决方案2】:

作为起点,您可以从:

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 非常紧密地结合在一起。

切碎

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-31
    • 2020-09-06
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    相关资源
    最近更新 更多