如何在Magento 1的结帐/单页中单击“订购地点”按钮时停止重定向?

时间:2017-05-05 06:01:29

标签: magento

我是magento的新手。我想在您单击下订单时停止重定向操作。而不是重定向,我想放置一个块下方的订单按钮。我怎么能这样做?

提前致谢

2 个答案:

答案 0 :(得分:0)

在单击地点顺序的onepagecheckout中,它会调用skin / frontend / base / default / js / opcheckout.js文件中的Review.prototype.save()函数。看起来像是

var Review = Class.create();
Review.prototype = {
initialize: function(saveUrl, successUrl, agreementsForm){
    this.saveUrl = saveUrl;
    this.successUrl = successUrl;
    this.agreementsForm = agreementsForm;
    this.onSave = this.nextStep.bindAsEventListener(this);
    this.onComplete = this.resetLoadWaiting.bindAsEventListener(this);
},

save: function(){
    if (checkout.loadWaiting!=false) return;
    checkout.setLoadWaiting('review');
    var params = Form.serialize(payment.form);
    if (this.agreementsForm) {
        params += '&'+Form.serialize(this.agreementsForm);
    }
    params.save = true;
    var request = new Ajax.Request(
        this.saveUrl,
        {
            method:'post',
            parameters:params,
            onComplete: this.onComplete,
            onSuccess: this.onSave,
            onFailure: checkout.ajaxFailure.bind(checkout)
        }
    );
},

该函数对saveOrderAction()进行ajax调用,你可以在app / code / core / Mage / Checkout / controllers / OnepageController.php文件中找到它。如果你通过这个函数,你会发现magento在这里设置了一个重定向变量到ajax调用的响应体。

if (isset($redirectUrl)) {
        $result['redirect'] = $redirectUrl;
    }

      $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));

现在您知道可以通过从响应正文中删除重定向变量来停止重定向。如果你想添加任何其他块,那么你可以在Review.prototype.save()函数中执行它。

**注意:您应该始终重写本地池中的核心文件,不建议修改核心文件**

答案 1 :(得分:0)

您可以像这样覆盖那个特定的块:

\设计\前端\基\默认\布局\ namespace_module.xml

<checkout_onepage_review>
    <remove name=" checkout.onepage.review.button"/>
    <reference name="root">
        <block type="namespace_module/checkout_onepage_review_button" name="tipping.checkout.onepage.review.button" as="button" template="moduelname/checkout/onepage/review/button.phtml"/>
    </reference>
</checkout_onepage_review>

模板文件: \设计\前端\基\默认\模板\ moduelname \结帐\ onepage \审查\ button.phtml

  <button type="button"
        title="<?php echo $this->__('Place Order') ?>"
        class="button btn-checkout" style="clear:both"
        onclick="submitCustomPlaceOrder();">
    <span>
        <span><?php echo $this->__('Place Order') ?></span>
    </span>
</button>

现在您可以在submitCustomPlaceOrder()函数中编写逻辑:

function submitCustomPlaceOrder(){
    //you logic here
               if(condition){
            reviewTmp.save();
   }

}

祝你好运!!!