Jump to content
Sign in to follow this  
UserWii

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

Recommended Posts

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

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

Share this post


Link to post
Share on other sites

Не стоит вставлять такой 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);

}

});

Edited by afwollis

Share this post


Link to post
Share on other sites

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

  • +1 1

Share this post


Link to post
Share on other sites

Не стоит вставлять такой 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, если в админке не указано иное.

Edited by jazzauto

Share this post


Link to post
Share on other sites
В 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, если в админке не указано иное.

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

Share this post


Link to post
Share on other sites
В 28.06.2015 в 21:03, SERJEU сказал:

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

и все) 

Share this post


Link to post
Share on other sites
В 11.03.2017 в 17:16, DelayDobro сказал:

и все) 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.