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 またはコントローラーが指定されていても)。2番目に、リダイレクト先を知るにはどうすればよいですか(支払いプロバイダーまたはサンキューページの場合)

ユーザーが「今すぐ注文」をクリックした後、サンキューページまたは支払いプロバイダーにリダイレクトされる前に、*.phtml を「単純に」ロードするより良い方法はありますか?

phtml は、HTML に配置してロードする必要がある追跡コードをロードするためのユーザーです。

4

1 に答える 1

0

代わりに、次のことを検討することをお勧めします。

  • 画面内モーダルまたはポップアップを効果的に発行する、注文レビューの注文ボタンに JavaScript アクションを追加する
  • モーダルを発行するクリックは 3000 ミリ秒 (3 秒) のタイムアウトを設定し、Magento が使用する注文送信 Ajax を起動します。注文の送信とリダイレクトは AJAX に依存しているため、これは重要です。

この例の jQuery スクリプト (Magento サイトに jQuery を追加する必要がありますが、これは標準ではありません) は、タイムアウトを設定し、モーダル/ポップアップを発行します。このコードを次のファイルに追加します。

/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 に答える