0

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

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

默认情况下,结帐页面上有 4 个步骤,客户需要在订购前完成。

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

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

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

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

第4步,没问题。

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

感谢任何形式的帮助。

4

2 回答 2

0

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

$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;
    }
}

并将其保存在具有以下结构的本地文件夹中:

本地/供应商/module_name/Block/Onepage.php

我希望这有帮助。

于 2014-09-19T20:56:44.613 回答
-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-06-18T11:45:24.717 回答