Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Добавить код javascript на страницу успешного оформления заказа


Recommended Posts

Здравствуйте! Хотели бы подключить сторонний обработчик заказов к магазину на ocStore 2.3.0.2.3

 

Для этого дается javascript код, который просят вставить на страницу успешного оформления заказа (success.php или тому подобную).

 

Посмотрел, погуглил, и возникло пару вопросов:

1) Куда лучше вставить - в код файла /template/common/success.tpl или в language\russian\checkout\success.php или в catalog/controller/checkout/success.php ?

 

2) А второй - там просят в в параметрах передать цену {price}, номер заказа и еще что-то. А через какие переменные можно получить эти данные? И опять-таки, в каком файле это лучше сделать, чтобы он понял, что это за переменные?

Надіслати
Поділитися на інших сайтах


в success php проверяете есть ли еще order_id в сессии, если есть - подгружаете заказ, формируете код

в success.tpl - если есть код - выводите

Надіслати
Поділитися на інших сайтах

А success php какой именно - который language\russian\checkout\success.php или catalog/controller/checkout/success.php ?

 

А в success.tpl - есть код

<?php echo $header; ?>
<div class="container">
  <ul class="breadcrumb">
    <?php foreach ($breadcrumbs as $breadcrumb) { ?>
    <li><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li>
    <?php } ?>
  </ul>
  <div class="row"><?php echo $column_left; ?>
    <?php if ($column_left && $column_right) { ?>
    <?php $class = 'col-sm-6'; ?>
    <?php } elseif ($column_left || $column_right) { ?>
    <?php $class = 'col-sm-9'; ?>
    <?php } else { ?>
    <?php $class = 'col-sm-12'; ?>
    <?php } ?>
    <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?>
      <h1><?php echo $heading_title; ?> Успешно!</h1>
      <?php echo $text_message; ?>
      <div class="buttons">
        <div class="pull-right"><a href="<?php echo $continue; ?>" class="btn btn-primary"><?php echo $button_continue; ?></a></div>
      </div>
      <?php echo $content_bottom; ?></div>
    <?php echo $column_right; ?></div>
</div>
<script type="text/javascript">
...
..
.
</script>
<?php echo $footer; ?>

И вот думал, как в примере написал, перед echo footer вставить этот <script>, но не уверен, будет ли он там работать, и вообще корректно ли это

Надіслати
Поділитися на інших сайтах


16 минут назад, maxximum сказал:

И вот думал, как в примере написал, перед echo footer вставить этот <script>, но не уверен, будет ли он там работать, и вообще корректно ли это

 

Будет работать. Если в контроллере найдутся все необходимые скрипту переменные.

Надіслати
Поділитися на інших сайтах

А не подскажите,  какая переменная отвечает за цену? Даже не цену, а общую стоимость заказа? Или может цены отдельно взятых товаров в заказе, потом их сложить просто.

 

Поискал в controller/checkout/success.php, нашел там упоминается $this->session->data['order_id'], которая как я понимаю id заказа содержит. А вот data['price']  или data['cost'] не нашел что-то

Надіслати
Поділитися на інших сайтах


@Vetroff ,@AlexDW  - Спасибо!

Более-менее разобрался, но не до конца. Нашел в controller/checkout/success.php строки

<?php 

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']);
unset($this->session->data['totals']);

Закомментировал order_id и totals. А потом внизу нашел, что объявляются переменные и по аналогии дописал свои строки

<?php
$data['footer'] = $this->load->controller('common/footer');
		$data['header'] = $this->load->controller('common/header');
		$data['totaly'] = $this->session->data['totals']; //по идее сумма
		$data['order_idsh'] = $this->session->data['order_id']; //вроде номер заказа

И потом в /template/common/success.tpl попробовал вывести эти переменные

 Номер заказа: <?php echo $order_idsh; ?><br>
Общая сумма: <?php echo $totaly; ?>

И получилось частично - $order_idsh вывела нормально номер заказа, а вот $totaly - ничего не вывела: http://prntscr.com/mdv3zl

Подскажите, почему так? Может я как-то не так к переменной обращаюсь? 

Надіслати
Поділитися на інших сайтах


@Vetroff вывели переменную, а внутри - пустота (NULL) 

Многого это не объяснило, честно говоря, ну по крайней мере то, что видимо другую переменную нужно брать. Но вот какую?

Надіслати
Поділитися на інших сайтах


Поискал еще, нашел что в теме 

 @Tom Советует установить модуль Checkout-detail.ocmod.xml 

Не знаю, то ли это решение, что мне нужно, но попробую, тк пока больше способов получить итоговую сумму не нашел. 

Прочитал даже статью про все переменные Opencart, http://s-engineer.ru/peremennye-cms-opencart/ но даже там про total ничего не упоминается! 

Надіслати
Поділитися на інших сайтах


Установил модуль Checkout-detail.ocmod.xml  - после этого в массиве $total появились значения.

Там еще отделитель от валюты и пробелов нужно, но это уже детали.

 

А такой вопрос еще - а можно ли как-то получить отдельно сумму заказа и сумма доставки?

 

В том, что выводит модуль это называется Предварительная стоимость http://prntscr.com/mf80uy

Можно ли ее как-то получить?

 

Тк в массиве $total уже общая сумма с доставкой

Змінено користувачем maxximum
Надіслати
Поділитися на інших сайтах


2 часа назад, maxximum сказал:

А такой вопрос еще - а можно ли как-то получить отдельно сумму заказа и сумма доставки?

Сумма всего заказа это $order['total']
Сумму доставки можно получить по коду итога shipping перебрав массив $totals
Получить можно так, передав номер заказа

$totals = $this->model_account_order->getOrderTotals($order_id);


 

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

@thentru Спасибо!

 

Нашел сумму доставки в виде цифры в итоге так:

<?php 
	  $totalar =   explode(" ", $totals[0]['text']); 
	  $chisel = count($totalar);
	  if ($chisel > 2) $summa = intval($totalar[0].$totalar[1]);
	  if ($chisel <= 2) $summa = intval($totalar[0]);
	  
	  ?>

пришлось несколько подумать, чтобы извлечь именно цифру, а не "1 690 руб" и еще подумать, что делать с пробелами в цифрах, но в итоге вроде получилось

Надіслати
Поділитися на інших сайтах


40 минут назад, maxximum сказал:

Нашел сумму доставки в виде цифры в итоге так:



 

 

Омг )

Это вот то, что называется "Операция на глазах через задний проход"

Без обид )

Надіслати
Поділитися на інших сайтах

@Vetroff, да никаких обид )

Я специально выложил, чтобы и другие подивились.

 

Я просто спрашивал-спрашивал, но никто конкретно решения не написал, только намеками и часть пути.

 

Ну и пришлось достраивать, как умею ) Если вы покажите свой вариант решения, более верный, будет интересно сравнить

Надіслати
Поділитися на інших сайтах


40 минут назад, maxximum сказал:

Я просто спрашивал-спрашивал, но никто конкретно решения не написал, только намеками и часть пути.

 

Ну и пришлось достраивать, как умею ) Если вы покажите свой вариант решения, более верный, будет интересно сравнить

 

Ну согласитесь, разбираясь самостоятельно вы получили гораздо больше знаний, чем прост скопипастив готовое решение :-)

 

В контроллере, как написали выше, можно получить массив totals используя функцию getOrderTotals, т.е. закомментируем

//            unset($this->session->data['order_id']);

 

добавляем ниже

 

$this->load->model('account/order');
$totals = $this->model_account_order->getOrderTotals($this->session->data['order_id']);

 

и в массиве мы имеем (в дефолтной конфигурации модулей) данные о предварительной стоимости, стоимости доставки и итого.

 

увидеть это на период разработки можно, например, так

 

print('<pre>');
print_r($totals);
print('</pre>');

 

Дальше, если особо не заморачиваться, можно тупо номеру элемента массива получить их значения

 

$sub_total = $totals[0]['value'];         // предв. стоимость
$shipping = $totals[1]['value'];         // стоимость доставки
$total = $totals[2]['value'];         // итого

 

ЗЫ. Это без установки описанного выше модификатора, если других данных не нужно.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.