【问题标题】:Magento: Custom checkout pageMagento:自定义结帐页面
【发布时间】:2013-03-09 14:45:47
【问题描述】:

我正在使用 Magento 1.7.2,但我无法弄清楚。我创建了一个销售定制产品(虚拟产品)的在线商店。

允许用户在我的商店注册是没有用的,因为他们只能购买一次产品。所以我需要禁用注册。

结账页面默认有4个步骤,客户需要在下单前完成。

  1. 结账方式
  2. 帐单信息
  3. 付款信息
  4. 订单审核

所以我需要消除第 1 步,因为我只使用访客结帐,并且提供登录或注册选项没有意义。所以客户点击结账后,需要直接进入第2步。

在第 2 步,即帐单信息中,我只需要客户姓名(名字和姓氏)和电子邮件,并且需要删除所有信息,例如电话号码、地址等,

在第 3 步中,我只提供了 PayPal,如果我可以取消该步骤,那就太好了。

第4步,没问题。

那么谁能告诉我如何更改结帐页面,或者是否可以创建一个新的自定义结帐页面以满足我的要求。如果有人能指出一些好的资源或教程,那将会很有帮助。

感谢任何形式的帮助。

【问题讨论】:

    标签: magento magento-1.7 checkout


    【解决方案1】:

    如果你想从结帐过程中删除一个步骤,你需要找到这个变量:

    $stepCodes = array('billing', 'shipping', 'shipping_method', 'payment', 'review');
    

    因此,如果您想删除计费流程(例如),那么您的代码应如下所示:

    $stepCodes = array('shipping', 'shipping_method', 'payment', 'review');
    

    最好的方法是制作一个自定义模块,以这种方式扩展 Mage_Checkout_Block_Onepage 类:

    class Vendor_ModuleName_Block_Onepage extends Mage_Checkout_Block_Onepage
    {
        public function getSteps()
        {
            $steps = array();
    
            if (!$this->isCustomerLoggedIn()) {
                $steps['login'] = $this->getCheckout()->getStepData('login');
            }
    
            $stepCodes = array('shipping', 'shipping_method', 'payment', 'ddate', 'review');
    
            foreach ($stepCodes as $step) {
                $steps[$step] = $this->getCheckout()->getStepData($step);
            }
            return $steps;
        }
    }
    

    并以这种结构将其保存在本地文件夹中:

    local/vendor/module_name/Block/Onepage.php

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      找到文件app\code\core\Mage\Checkout\Block\Onepage.php

      编辑类并替换为以下代码:

      class Mage_Checkout_Block_Onepage extends Mage_Checkout_Block_Onepage_Abstract
      {
          /**
           * Get 'one step checkout' step data
           *
           * @return array
           */
          public function getSteps()
          {
              $steps = array();
              $stepCodes = $this->_getStepCodes();
      
              if ($this->isCustomerLoggedIn()) {
                  $stepCodes = array_diff($stepCodes, array('login'));
              }
      
              foreach ($stepCodes as $step) {
                  $steps[$step] = $this->getCheckout()->getStepData($step);
              }
      
              return $steps;
          }
      
          /**
           * Get active step
           *
           * @return string
           */
          public function getActiveStep()
          {
              return $this->isCustomerLoggedIn() ? 'billing' : 'login';
          }
      }
      

      到以下:

      class Mage_Checkout_Block_Onepage extends Mage_Checkout_Block_Onepage_Abstract
      {
          /**
           * Get 'one step checkout' step data
           *
           * @return array
           */
          public function getSteps()
          {
              $steps = array();
      
              if (!$this->isCustomerLoggedIn()) {
                  $steps['login'] = $this->getCheckout()->getStepData('login');
              }
      
              $stepCodes = array('shipping','billing','shipping_method', 'payment', 'review');
      // or new
      //$stepCodes = array('shipping','payment', 'review');
      
              foreach ($stepCodes as $step) {
                  $steps[$step] = $this->getCheckout()->getStepData($step);
              }
              return $steps;
          }
      }
      

      刷新缓存并立即检查..

      【讨论】:

        猜你喜欢
        • 2015-08-26
        • 2011-05-17
        • 2017-02-23
        • 2016-07-29
        • 2018-10-26
        • 1970-01-01
        • 2012-04-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多