Идентификатор успешного заказа Opencart и Total из JavaScript
Мне нужно запустить JavaScript на странице успешного заказа и получить две вещи: идентификатор заказа и общую сумму заказа. Код выглядит так:
<script type="text/javascript">
// Some code here
arr.push([
"create_order",
{order_id: "*order_id*", sum: *sum*}
]);
</script>
Вопросы
- Где я должен вставить свой сценарий? Если в success.tpl, то где именно? Если в header.tpl, то как его запустить только на странице успешного заказа?
- Какие переменные мне следует использовать? Я попробовал это, это не сработало:
{order_id: "<?php echo $order_id; ?>", sum: <?php echo $product_total; ?>}
PS Opencart версия 1.5.6
2 ответа
Решение
Проблема здесь в том, что на странице успеха все данные заказа уже сброшены (удалены) из переменных сеанса. Вот почему ваш код не может быть успешным.
Заглянуть в 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');
Теперь у вас есть order_id
и корзина 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 } ?>
Этого должно быть достаточно.
Предыдущий ответ необходимо обновить для более поздних версий Opencart для 2.2.0
это
$data['order_id'] = 0;
$data['total'] = 0;
and
$data['order_id'] = $this->session->data['order_id'];
$data['total'] = $this->cart->getTotal();
вместо новых строк, указанных ранее