1

任何人都可以帮助解决以下问题。

一旦 onepagecheckout 中的客户单击“立即订购”按钮,我想显示一个自定义页面 2-3 秒,然后转发到支付提供商或感谢页面。

目前我在“checkout_type_onepage_save_order_after”上有一个观察者调用我的自定义模型/方法。

在这个模型/方法中,我做了一个......

$this->_forward($url); //with $url being a custom controller/method
$res->sendResponse();
exit;

在这个自定义控制器/方法中,我加载并渲染我的布局,显示我的 *.phtml – 文件,然后......

$url = Mage::getUrl("???");
$this->_forward($url);<
$res = Mage::app()->getResponse();
$res->sendResponse();

这就是我迷失的地方(或者我可能完全错了)。首先,控制器根本不转发(无论给出什么 url 或控制器)。其次,我怎么知道重定向到哪里(如果是其支付提供商或感谢页面)

有没有更好的方法在用户单击“立即订购”之后“简单地”加载 *.phtml,然后再将他重定向到感谢页面或付款提供商。

phtml 是用户加载跟踪代码,必须在 html 中放置和加载。

4

1 回答 1

0

我建议您考虑执行以下操作:

  • 在订单审核中向下订单按钮添加 javascript 操作,这将有效地发出屏幕内模式或弹出窗口
  • 发出模式的单击将设置 3000 毫秒(3 秒)的超时,然后触发 Magento 使用的提交 Ajax 的订单。这很重要,因为订单提交和重定向依赖于 AJAX。

这个示例 jQuery 脚本(需要将 jQuery 添加到您的 Magento 站点,这不是标准的)将设置超时,发出模态/弹出窗口我会将此代码添加到以下文件中:

/app/design/frontend/[your theme]/template/checkout/onepage/review/button.phtml

向这一行添加一个类并删除 onclick 事件,以便您可以捕获单击并插入超时:

<button type="submit" title="<?php echo $this->__('Place Order') ?>" class="btn-place-order button btn-checkout"><span><span><?php echo $this->__('Place Order') ?></span></span></button>

<script>
    $('#myform').submit(function(event) {
        event.preventDefault();
        //issue the popup - put your html in here:
        var html = '<div style="position:absolute; top:0; left:0; min-height: 100%; width: 100%; background-color:white;"><h1>I am a popup</h1></div>';
        $('body').append(html);
        var self = this;
        window.setTimeout(function() {
        review.save();
        }, 3000);
    });
</script>
于 2012-08-05T00:57:00.437 回答