Magento:自定义结帐页面

irtuqstp  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(157)

我在摆弄Magento 1. 7. 2,但我无法弄清楚,我创建了一个销售定制产品(虚拟产品)的在线商店。
注册我的店铺没有用,只能购买一次,所以我需要关闭注册。
默认情况下,结帐页面上有4个步骤,客户需要在订购前完成这些步骤。

  1. checkout 方法
    1.帐单信息
    1.付款信息
    1.订单复查
    因此,我需要删除步骤1,因为我只使用访客结帐,没有提供登录或注册选项的意义。因此,在客户单击结帐后,他们需要直接进入步骤2。
    在第2步(即计费信息)中,我只需要客户姓名(名字和姓氏)和电子邮件,所有信息(如电话号码、地址等)都需要删除。
    在第3步我只提供贝宝,这将是很好的,如果我可以消除这一步。
    第四步,没问题。
    那么,谁能告诉我如何修改结帐页面,或者是否有可能创建一个新的自定义结帐页面来满足我的要求?如果有人能指出一些好的资源或教程,这将是很有帮助的。
    感谢你的帮助。
fwzugrvs

fwzugrvs1#

如果要从 checkout 过程中删除一个步骤,则需要找到以下变量:

$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
我希望这能帮上忙。

wooyq4lh

wooyq4lh2#

定位文件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;
    }
}

刷新缓存并立即检查..

相关问题