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

Как пропустить 3й шаг оформления заказа зарегистрированному пользователю ocstore 2.3


compressorz

Recommended Posts

Всем привет, в поисках помощи решил обратиться к этому форуму. Устал искать решение

Есть задача убрать 3й шаг оформления заказа на ocstore 2.3 (адрес доставки), при этом сохранить обработку адреса в этом пункте, то есть сам по себе пункт должен работать, но выполнение его должно быть скрыто.

 

Выяснил, что исполнением данного пункта занимаются 2 файла:

/catalog/view/theme/yourtheme/template/checkout/checkout.tpl

/catalog/view/theme/yourtheme/template/checkout/shipping_address.tpl

 

checkout.tpl занимается исполнением и отображением внешних div (то есть каркас при свернутом аккордионе) 

Шаг 3: Адрес доставки

shipping_address.tpl отвечает за отображение и исполнение внутренних пунктов (то есть при открытом пункте)

- Использовать существующий адрес и - Я хочу использовать новый адрес

 

Испробывал все способы которые только нашел в интернете, но результат так и не получил, единственный способ который привел хоть к каким то результатам 

при использовании скрипта в shipping_address.tpl:

<script language="Javascript" type="text/javascript">$(document).ready(function(){$('#button-shipping-address').trigger('click');});</script>

 

Но происходит зацикливание следующего пункта "Шаг 3: Способ доставки" (дергается)  то есть сам по себе скрипт выполняется бесконечное колличество раз и подтверждением этому бесконечно прогружающаяся кнопка "ПРОДОЛЖИТЬ"

Прописывание этого скрипта (являющегося нажатием кнопки продолжить) в checkout.tpl не приносит результатов.

 

Поэтому думаю что есть 2 варианта решения:

1)Остановить работу нажатия кнопки после перехода на пункт "Шаг 3: Способ доставки" (собственно прикратить исполнение вышепрописанного скрипта) 

- пробовал вместо .tigger использовать .one и `oneclick` попросту ничего не происходит, скрипт не работает

2)Использовать другие скрипты которые в при исполнении нажатия на кнопку "ПРОДОЛЖИТЬ" в Шаг 2: Платежная информация запустят исполнение скриптов "Шаг 3: Способ доставки"

 

Но поскольку я не соображаю ни в javascrypt ни даже в библиотеках jquery , не понимаю какой код прописать

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

Для наглядности прикрепляю части кода  в checkout.tpl и shipping_address.tpl

// Shipping Address

$(document).delegate('#button-shipping-address', 'click', function() {
    $.ajax({
        url: 'index.php?route=checkout/shipping_address/save',
        type: 'post',
        data: $('#collapse-shipping-address input[type=\'text\'], #collapse-shipping-address input[type=\'date\'], #collapse-shipping-address input[type=\'datetime-local\'], #collapse-shipping-address input[type=\'time\'], #collapse-shipping-address input[type=\'password\'], #collapse-shipping-address input[type=\'checkbox\']:checked, #collapse-shipping-address input[type=\'radio\']:checked, #collapse-shipping-address textarea, #collapse-shipping-address select'),
        dataType: 'json',
        beforeSend: function() {
            $('#button-shipping-address').button('loading');
        },
        success: function(json) {
            $('.alert, .text-danger').remove();

            if (json['redirect']) {
                location = json['redirect'];
            } else if (json['error']) {
                $('#button-shipping-address').button('reset');

                if (json['error']['warning']) {
                    $('#collapse-shipping-address .panel-body').prepend('<div class="alert alert-warning">' + json['error']['warning'] + '<button type="button" class="close" data-dismiss="alert">×</button></div>');
                }

                for (i in json['error']) {
                    var element = $('#input-shipping-' + i.replace('_', '-'));

                    if ($(element).parent().hasClass('input-group')) {
                        $(element).parent().after('<div class="text-danger">' + json['error'][i] + '</div>');
                    } else {
                        $(element).after('<div class="text-danger">' + json['error'][i] + '</div>');
                    }
                }

                // Highlight any found errors
                $('.text-danger').parent().parent().addClass('has-error');
            } else {
                $.ajax({
                    url: 'index.php?route=checkout/shipping_method',
                    dataType: 'html',
                    complete: function() {
                        $('#button-shipping-address').button('reset');
                    },
                    success: function(html) {
                        $('#collapse-shipping-method .panel-body').html(html);

                        $('#collapse-shipping-method').parent().find('.panel-heading .panel-title').html('<a href="#collapse-shipping-method" data-toggle="collapse" data-parent="#accordion" class="accordion-toggle"><?php echo $text_checkout_shipping_method; ?> <i class="fa fa-caret-down"></i></a>');

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


                        $('#collapse-payment-method').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_payment_method; ?>');
                        $('#collapse-checkout-confirm').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_confirm; ?>');

                        $.ajax({
                            url: 'index.php?route=checkout/shipping_address',
                            dataType: 'html',
                            success: function(html) {
                            $('#collapse-shipping-address .panel-body').html(html);
                            },
                            error: function(xhr, ajaxOptions, thrownError) {
                                alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
                            }

                        });
                    },
                    error: function(xhr, ajaxOptions, thrownError) {
                        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
                    }
                });

                $.ajax({
                    url: 'index.php?route=checkout/payment_address',
                    dataType: 'html',
                    success: function(html) {
                        $('#collapse-payment-address .panel-body').html(html);
                    },
                    error: function(xhr, ajaxOptions, thrownError) {
                        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
                    }
                });
            }
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
    });
});

 

 

и checkout.tpl

 

<script language="Javascript" type="text/javascript">
$(document).ready(function(){
$('#button-shipping-address').trigger('click');
});
</script> 
  
<form class="form-horizontal">
  <?php if ($addresses) { ?>
  <div class="radio">
    <label>
      <input type="radio" name="shipping_address" value="existing" checked="checked" />
      <?php echo $text_address_existing; ?></label>
  </div>
  <div id="shipping-existing">
    <select name="address_id" class="form-control">
      <?php foreach ($addresses as $address) { ?>
      <?php if ($address['address_id'] == $address_id) { ?>
      <option value="<?php echo $address['address_id']; ?>" selected="selected"><?php echo $address['firstname']; ?> <?php echo $address['lastname']; ?>, <?php echo $address['address_1']; ?>, <?php echo $address['city']; ?>, <?php echo $address['zone']; ?>, <?php echo $address['country']; ?></option>
      <?php } else { ?>
      <option value="<?php echo $address['address_id']; ?>"><?php echo $address['firstname']; ?> <?php echo $address['lastname']; ?>, <?php echo $address['address_1']; ?>, <?php echo $address['city']; ?>, <?php echo $address['zone']; ?>, <?php echo $address['country']; ?></option>
      <?php } ?>
      <?php } ?>
    </select>
  </div> 
  <div class="buttons clearfix">
    <div class="pull-right">
      <input type="button" value="<?php echo $button_continue; ?>" id="button-shipping-address" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-primary" />
    </div>
  </div>
</form> 

 

Все ненужное повырезал, для удобства. Заранее спасибо за помощь, всем добра

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


Рекомендую и не будет никаких проблем

 

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

Этот способ я знаю, но это не решение проблемы! Еще более эффективный способ - заказать разработку магазина с 0.

Хочется понять принцип работы оформления заказа реализованного разработчиками ocstore

 

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


2 минуты назад, compressorz сказал:

Этот способ я знаю, но это не решение проблемы! Еще более эффективный способ - заказать разработку магазина с 0.

Хочется понять принцип работы оформления заказа реализованного разработчиками ocstore

 

Ну если все то время что вы потратите на решение этой проблемы стоит менее чем 450руб то это не выход конечно, но с точки зрения здравого смысла я бы рекомендовал не изобретать велосипед.

Цитата

Но поскольку я не соображаю ни в javascrypt ни даже в библиотеках jquery , не понимаю какой код прописать

 

Тогда не пойму

Цитата

Готовые решения использовать категорически не хочу, поскольку хочется понять исполнение оформления заказа от начала и до конца

 

Если в целях изучения - изучите js и php и поймете как все работает, без этих знаний этого никак не понять.

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

9 минут назад, compressorz сказал:

20% работы приводят к 80% результата. Пока не найду решение буду изучать jquery, найду решение буду знать необходимое для работы с ocstore

Жать 450р на симплу я считаю грехом))

Модуль должен как минимум раза в 3-5 дороже стоить))

 

 

 

 

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


3 минуты назад, zlob сказал:

Жать 450р на симплу я считаю грехом))

Модуль должен как минимум раза в 3-5 дороже стоить))

Тс.. не подкидуйте идею автору))) Мне это по карману ударит часто беру его модуль^_^

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

1 минуту назад, zlob сказал:

Жать 450р на симплу я считаю грехом))

Модуль должен как минимум раза в 3-5 дороже стоить))

 

 

 

 

Этот модуль стоит своих денег, разве кто-то спорит? но покупка не решает проблему, ведь сам по себе ocstore бесплатное решение, логично же научиться пользоваться им бесплатно. 

Вообщем если платить то тогда уж за движок с поддержкой

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


2 минуты назад, Exploits сказал:

Тс.. не подкидуйте идею автору))) Мне это по карману ударит часто беру его модуль^_^

Я уже говорил автору, что модуль будут так же охотно покупать и за 1-3к, потому что альтернатив нет и это лучший вариант для оформления заказа

+ автор всегда в течении 5 минут отвечает и помогает с любыми вопросами)

 

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


1 час назад, compressorz сказал:

 надеюсь тут сидят js прогеры,

Не помню, что бы кому-то рассказали как сделать нормальную корзину не используя симплу.

Если чел спрашивает за "пропустить шаг", его пошлют в симплу. Так всегда.

Вы если доковыряете, то выложите здес решение с пояснениями и кометнариями. И станете первым js прогером на форуме.

 

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

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


3 часа назад, florapraktik сказал:

Не помню, что бы кому-то рассказали как сделать нормальную корзину не используя симплу.

Если чел спрашивает за "пропустить шаг", его пошлют в симплу. Так всегда.

Вы если доковыряете, то выложите здес решение с пояснениями и кометнариями. И станете первым js прогером на форуме.

 

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

Проблему решил самостоятельно. выкладываю решение с пояснением (не поленился) 

- Пропускаем 3 шаг оформления заказа ocstore 2.3 (для зарегистрированных пользователей) 

- рекомендую предварительно сохранить копию файла checkout.tpl

1) Найти файл /catalog/view/theme/yourtheme/template/checkout/checkout.tpl   (где "yourtheme" ваша тема, если тема стандартная то выбираем папку "default")

2) Скрываем отображение этого пункта визуально, ищем код html: 

<div class="panel panel-default">
    <div class="panel-heading">
        <h4 class="panel-title"><?php echo $text_checkout_shipping_address; ?></h4>
    </div>
<div class="panel-collapse collapse" id="collapse-shipping-address">
    <div class="panel-body"></div>
</div>

и меняем его на: 

<div class="panel panel-default" style="display: none;">
    <div class="panel-heading">
        <h4 class="panel-title"><?php echo $text_checkout_shipping_address; ?></h4>
    </div>
<div class="panel-collapse collapse" id="collapse-shipping-address">
    <div class="panel-body"></div>
</div>

То есть мы изменили всего одну строку, добавив к тегу <div> стиль style="display: none;

3) Теперь нам в коде нужно найти // Payment Address  и выделить весь код до  // Shipping Address

- Данный участок кода относится к исполнению второго шага Шаг 2: Платежная информация и изменения будем делать в этом куске кода

ищем в этом участке кода вот этот кусок (проверяйте внимательно, там таких 3 похожих куска) 

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" data-toggle="collapse" data-parent="#accordion" class="accordion-toggle"><?php echo $text_checkout_shipping_address; ?> <i class="fa fa-caret-down"></i></a>');

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

  $('#collapse-shipping-method').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_shipping_method; ?>');
  $('#collapse-payment-method').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_payment_method; ?>');
  $('#collapse-checkout-confirm').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_confirm; ?>');
},

и меняем его на этот: 

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" data-toggle="collapse" data-parent="#accordion" class="accordion-toggle"><?php echo $text_checkout_shipping_address; ?> <i class="fa fa-caret-down"></i></a>');

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

    setTimeout(function(){
      $('#button-shipping-address').trigger('click');
    }, 500);

    $('#collapse-shipping-method').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_shipping_method; ?>');
    $('#collapse-payment-method').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_payment_method; ?>');
    $('#collapse-checkout-confirm').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_confirm; ?>');
},

все готово. Получается мы добавили вот этот скрипт 

    setTimeout(function(){
      $('#button-shipping-address').trigger('click');
    }, 500);

Этот кусок кода с отсрочкой в 0.5 секунды нажимает кнопку "продолжить" в шаге "адресс доставки" но исполняется в коде "платежной информации" 

поменяв цифру "500" можно ускорить или замедлить исполнение скрипта

Всем спасибо и удачи!

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


  • 1 year later...
В 26.01.2018 в 08:52, compressorz сказал:

все готово. Получается мы добавили вот этот скрипт 


    setTimeout(function(){
      $('#button-shipping-address').trigger('click');
    }, 500);

Этот кусок кода с отсрочкой в 0.5 секунды нажимает кнопку "продолжить" в шаге "адресс доставки" но исполняется в коде "платежной информации" 

поменяв цифру "500" можно ускорить или замедлить исполнение скрипта

Всем спасибо и удачи!

 

Огромное спасибо, решение сработало на OpenCart 3.0.3.2.

UPD: Осталось понять, почему цена доставки теперь одна для всех регионов в режиме зарегистрированного пользователя. По сути, оно будет работать только в первый раз. Если пользователь решит отправить в другой регион, то shipping-address у него будет браться из первого оформления заказа без перезаписи.

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


В 25.01.2018 в 22:28, compressorz сказал:

20% работы приводят к 80% результата.

кто держит?
 

 

В 26.01.2018 в 04:52, compressorz сказал:

Проблему решил самостоятельно. выкладываю решение с пояснением (не поленился)

ага, гугл творит чудеса

 

В 25.01.2018 в 22:17, compressorz сказал:

Хочется понять принцип работы оформления заказа реализованного разработчиками ocstore

поняли?

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


21 минуту назад, xota сказал:

А почему все такие злые?:unsure:

велосипеда нет у нас..
а вот у вас есть
 

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


В 09.11.2019 в 17:39, xota сказал:

 

Огромное спасибо, решение сработало на OpenCart 3.0.3.2.

UPD: Осталось понять, почему цена доставки теперь одна для всех регионов в режиме зарегистрированного пользователя. По сути, оно будет работать только в первый раз. Если пользователь решит отправить в другой регион, то shipping-address у него будет браться из первого оформления заказа без перезаписи.

 

Очевидно, что покупка очередного модуля - это субъективное решение, которое не является универсальным. Если модуль Simple настолько божественен, то хотя бы его аналог включили бы в OpenCart 3. Лично я протестировал два модульных решения, и меня они не устроили.

Большая просьба, не флудите в теме, вопрос всё ещё открыт.

 

Скрипт, жмущий на кнопку третьего этапа с доставкой, исполняется на втором этапе с оплатой. Это отличное решение, но для зарегистрированного пользователя оно срабатывает только в первый раз, и не даёт зарегистрированному пользователю изменить цену доставки для другого региона в следующем заказе. Как обойти эту ошибку на шаблоне default? Вопрос актуален в том числе для Opencart 3.

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


  • 3 months later...

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

Насчет симпл вот например он не всегда решение так как модуль доставки например может быть не совместим с симплчекаутом (как в моих случаях) и тогда нужно искать помощи как что сделать - и находишь решение вопроса - купи модуль симпл =)))) и все. парень хоть постарался.

  • +1 2
Надіслати
Поділитися на інших сайтах


  • 1 year later...
В 06.03.2020 в 10:46, Pavelsss сказал:

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

Насчет симпл вот например он не всегда решение так как модуль доставки например может быть не совместим с симплчекаутом (как в моих случаях) и тогда нужно искать помощи как что сделать - и находишь решение вопроса - купи модуль симпл =)))) и все. парень хоть постарался.

Тоже, пока дочитал, ядом вроде умылся. А ведь форум вроде для решения вопросов и помощи. Вот и думаю теперь, я нуб полный и бойся спросить ато заклюют.

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


  • 7 months later...
On 6/16/2021 at 10:24 PM, gushelworkshop said:

пока дочитал, ядом вроде умылся

аналогично, пришел с вопросом о помощи, со старта получил поклёп на распространение вареза...

Есть в рунете, практически на любом форуме, такая категория "бывалых" форумчан, с паханскими повадками...

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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