Opencart成功的订单ID和来自JavaScript的Total

Rom*_*min 1 javascript php opencart

我需要在成功的订单页面上运行JavaScript并获得两件事:订单ID和总订单金额.代码如下:

<script type="text/javascript">
    // Some code here
    arr.push([
        "create_order",
        {order_id: "*order_id*", sum: *sum*}
    ]);
</script>
Run Code Online (Sandbox Code Playgroud)

问题

  1. 我应该在哪里粘贴我的脚本?如果进入success.tpl比在哪里?如果进入header.tpl而不是如何仅在成功订单的页面上运行它?
  2. 我应该使用哪些变量?我试过这个,它不起作用:
{order_id: "<?php echo $order_id; ?>", sum: <?php echo $product_total; ?>}
Run Code Online (Sandbox Code Playgroud)

PS Opencart版本是1.5.6

sha*_*yyx 8

这里的问题是,在成功页面上,所有订单数据都已从会话变量中取消设置(删除).这就是为什么你的代码不能成功的原因.

查看catalog/controller/checkout/success.php并将index()函数的开头更改为:

public function index() {
    $this->data['order_id'] = 0; // <-- NEW LINE
    $this->data['total'] = 0; // <-- NEW LINE

    if (isset($this->session->data['order_id'])) {
        $this->data['order_id'] = $this->session->data['order_id']; // <-- NEW LINE
        $this->data['total'] = $this->cart->getTotal(); // <-- NEW LINE

        $this->cart->clear();

        unset($this->session->data['shipping_method']);
        unset($this->session->data['shipping_methods']);
        unset($this->session->data['payment_method']);
        unset($this->session->data['payment_methods']);
        unset($this->session->data['guest']);
        unset($this->session->data['comment']);
        unset($this->session->data['order_id']);    
        unset($this->session->data['coupon']);
        unset($this->session->data['reward']);
        unset($this->session->data['voucher']);
        unset($this->session->data['vouchers']);
    }   

    $this->language->load('checkout/success');
Run Code Online (Sandbox Code Playgroud)

现在您将order_idand cart的total值存储在模板变量中,因此只需在您的success.tpl(不是标题)中使用它们:

<?php if($order_id) { ?>
<script type="text/javascript">
    // Some code here
    arr.push([
        "create_order",
        {order_id: '<?php echo $order_id; ?>', sum: '<?php echo $total; ?>'}
    ]);
</script>
<?php } ?>
Run Code Online (Sandbox Code Playgroud)

这应该足够了.