Reputation: 23
I need to run JavaScript on the successful order's page and get two things: order ID and total order amount. The code looks like:
<script type="text/javascript">
// Some code here
arr.push([
"create_order",
{order_id: "*order_id*", sum: *sum*}
]);
</script>
Questions
{order_id: "<?php echo $order_id; ?>", sum: <?php echo $product_total; ?>}
P. S. Opencart version is 1.5.6
Upvotes: 1
Views: 6310
Reputation: 11
The previous answer needs to be updated for later versions of Opencart
for 2.2.0
it is
$data['order_id'] = 0;
$data['total'] = 0;
and
$data['order_id'] = $this->session->data['order_id'];
$data['total'] = $this->cart->getTotal();
instead of the new lines indicated previously
Upvotes: 1
Reputation: 16055
The problem here is that on success page all the order data is already unset (deleted) from session variables. That's why your code cannot succeed.
Look into catalog/controller/checkout/success.php
and change the beginning of the index()
function to this:
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');
Now you have the order_id
and cart's total
values stored in template variables, so just use them in your success.tpl
(not header):
<?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 } ?>
This should be enough.
Upvotes: 7