Перейти к содержанию
UserWii

Как пропустить 3 шаг в оформлении заказа opencart 2.0?

Рекомендуемые сообщения

Как пропустить 3 шаг в оформлении заказа opencart 2.0? Я пробовал пропустить шаг 3 с помощью этого:
<script language="Javascript" type="text/javascript">
$(document).ready(function(){
$('#button-shipping-address').trigger('click');
});
</script>

Скрипт нажимает кнопку и переходит на следующий шаг, но следующий шаг начинает открываться и закрываться и дергается. При оформлении заказа без регистрации все нормально, но при оформлении заказа с регистрацией это происходит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не стоит вставлять такой javascript в shipping_address.tpl, происходит зацикливание. Откройте checkout.tpl и посмотрите на делегирование события нажатия на кнопку, которую надо кликнуть.

$(document).delegate('#button-shipping-address', 'click', function() {  с 430 строки, по клику произойдет следующее

  • Post на index.php?route=checkout/shipping_address/save
  • Два почти параллельных запроса index.php?route=checkout/shipping_method и index.php?route=checkout/shipping_address
  • После получения результата с index.php?route=checkout/shipping_method стартует index.php?route=checkout/shipping_address и как раз тут зацикливание
Что можно сделать - найти обработчик кнопки со второго шага

 

// Payment Address

$(document).delegate('#button-payment-address', 'click', function() { 337 строка

 

Далее найти где вытаскивается html 3-го шага

$.ajax({   url: 'index.php?route=checkout/shipping_address',  374 строка

 

И после вставки в dom html кликнуть на кнопку

$.ajax({

url: 'index.php?route=checkout/shipping_address',

dataType: 'html',

success: function(html) {

$('#collapse-shipping-address .panel-body').html(html);

$('#collapse-shipping-address').parent().find('.panel-heading .panel-title').html('');

$('a[href=\'#collapse-shipping-address\']').trigger('click');

$('#collapse-shipping-method').parent().find('.panel-heading .panel-title').html('');

$('#collapse-payment-method').parent().find('.panel-heading .panel-title').html('');

$('#collapse-checkout-confirm').parent().find('.panel-heading .panel-title').html('');

$('#button-shipping-address').trigger('click'); // <-- здесь имитируем клик

},

error: function(xhr, ajaxOptions, thrownError) {

alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);

}

});

Изменено пользователем afwollis

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

купи себе модуль Simple и не мучайся

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не стоит вставлять такой javascript в shipping_address.tpl, происходит зацикливание. Откройте checkout.tpl и посмотрите на делегирование события нажатия на кнопку, которую надо кликнуть.

$(document).delegate('#button-shipping-address', 'click', function() {  с 430 строки, по клику произойдет следующее

  •  
  • Post на index.php?route=checkout/shipping_address/save
  • Два почти параллельных запроса index.php?route=checkout/shipping_method и index.php?route=checkout/shipping_address
  • После получения результата с index.php?route=checkout/shipping_method стартует index.php?route=checkout/shipping_address и как раз тут зацикливание
Что можно сделать - найти обработчик кнопки со второго шага

 

// Payment Address

$(document).delegate('#button-payment-address', 'click', function() { 337 строка

 

Далее найти где вытаскивается html 3-го шага

$.ajax({   url: 'index.php?route=checkout/shipping_address',  374 строка

 

И после вставки в dom html кликнуть на кнопку

$.ajax({

url: 'index.php?route=checkout/shipping_address',

dataType: 'html',

success: function(html) {

$('#collapse-shipping-address .panel-body').html(html);

$('#collapse-shipping-address').parent().find('.panel-heading .panel-title').html('');

$('a[href=\'#collapse-shipping-address\']').trigger('click');

$('#collapse-shipping-method').parent().find('.panel-heading .panel-title').html('');

$('#collapse-payment-method').parent().find('.panel-heading .panel-title').html('');

$('#collapse-checkout-confirm').parent().find('.panel-heading .panel-title').html('');

$('#button-shipping-address').trigger('click'); // <-- здесь имитируем клик

},

error: function(xhr, ajaxOptions, thrownError) {

alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);

}

});

 

 

Если очень внимательно посмотреть на этот код, то решение лежит в строчке

<?php if ($shipping_required) { ?>

 

Здесь написано о том, что если в админке для данного товара установлено значение "Необходима доставка: -> Да

то будет показываться Шаг-3

А если $shipping_required ==false

то шага-3 просто не будет.

Идете в базу данных через phpMyadmin  и SQL-запросом обновляете в таблице oc_product поле shipping

Записываете туда ноль (0):

UPDATE `oc_product` SET `shipping`=0

Делов-то.

И код коверкать не надо.

А чтобы обеспечить свое будущее, нужно установить для этого поля значение по умолчанию = 0

Тогда при заведении нового товара в базу всегда будет писаться 0, если в админке не указано иное.

Изменено пользователем jazzauto

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 08.10.2016 в 22:54, jazzauto сказал:

 

Если очень внимательно посмотреть на этот код, то решение лежит в строчке

<?php if ($shipping_required) { ?>

 

Здесь написано о том, что если в админке для данного товара установлено значение "Необходима доставка: -> Да

то будет показываться Шаг-3

А если $shipping_required ==false

то шага-3 просто не будет.

Идете в базу данных через phpMyadmin  и SQL-запросом обновляете в таблице oc_product поле shipping

Записываете туда ноль (0):

UPDATE `oc_product` SET `shipping`=0

Делов-то.

И код коверкать не надо.

А чтобы обеспечить свое будущее, нужно установить для этого поля значение по умолчанию = 0

Тогда при заведении нового товара в базу всегда будет писаться 0, если в админке не указано иное.

И в этом случае отключается и выбор способа доставки, который нужен, в отличии от дублированного адреса... Делов-то.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 28.06.2015 в 21:03, SERJEU сказал:

купи себе модуль Simple и не мучайся

и все) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 11.03.2017 в 17:16, DelayDobro сказал:

и все) 

А мне не нравится решение с использованием IonCube.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

напиши свой модуль и все ... человек учился - потом придумал модуль и написал его .. сделал ioncube чтоб защитись свой бизнесс - это его деньги

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.