Opencart успешный идентификатор заказа и итог из JavaScript

Opencart успешный идентификатор заказа и итог из JavaScript

13.11.2013 09:28:19 Просмотров 35 Источник

Мне нужно запустить JavaScript на странице успешного заказа и получить две вещи: идентификатор заказа и общую сумму заказа. Код выглядит так::

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

Вопросы

  1. Куда мне вставить свой сценарий? Если в успех.ТПЛ чем именно? Если в заголовок.tpl чем, как запустить его только на странице успешного заказа?
  2. Какие переменные я должен использовать? Я уже пробовал это, но ничего не вышло:
{order_id: "<?php echo $order_id; ?>", sum: <?php echo $product_total; ?>}

P. S. Opencart версия 1.5.6

У вопроса есть решение - Посмотреть?

Ответы - Opencart успешный идентификатор заказа и итог из JavaScript / Opencart successful order ID and Total from JavaScript

Является ответом!
shadyyx

14.11.2013 12:54:02

Проблема здесь заключается в том, что на странице успеха все данные заказа уже не заданы (удалены) из переменных сеанса. Вот почему ваш код не может быть успешным.

Загляните в 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 } ?>

Этого должно быть достаточно.

FreestyleMD

23.01.2017 06:38:30

Предыдущий ответ необходимо обновить для более поздних версий 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();

вместо новых строк, указанных ранее

Закрыть X