我是Magento的新手。单击"位置订单"时,我想停止重定向操作。我不想重定向,而是要在定位订单按钮下放置一个块。我该怎么做?
预先感谢
在OnePageCheckout中,当您单击"位置订单"时,请调用Skin/frontend/base/base/base/default/js/opCheckout.js file.js fime the 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)
}
);
},
该函数对您在文件应用程序/code/core/core/mage/nockout/controllers/onepagecontroller.php中找到的ajax调用。如果您浏览该功能,您会发现这里的Magento将重定向变量设置为Ajax调用的响应主体。
if (isset($redirectUrl)) {
$result['redirect'] = $redirectUrl;
}
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
现在,您知道可以通过从响应主体中删除该重定向变量来停止重定向。如果要添加任何其他块,则可以在Review.Prototype.save((函数中进行操作。
**注意:您应该始终重写本地池中的核心文件,不建议修改核心文件**
您可以覆盖这样的巨大块:
design frontend base base default layout nessepace_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>
模板文件: design frontend base base default template moduelname checkout onepage onepage onews button 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();
}
}
祝你好运!