我是magento的新手。我想在您单击下订单时停止重定向操作。而不是重定向,我想放置一个块下方的订单按钮。我怎么能这样做?
提前致谢
答案 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();
}
}
祝你好运!!!