Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


 Share

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> 

 

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

Edited by compressorz
Link to comment
Share on other sites


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

 

Link to comment
Share on other sites

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

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

 

  • +1 1
Link to comment
Share on other sites


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

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

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

 

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

Циии

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

 

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

Циии

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

 

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

Link to comment
Share on other sites

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

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

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

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

 

 

 

 

Link to comment
Share on other sites


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

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

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

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

Link to comment
Share on other sites

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

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

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

 

 

 

 

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

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

Link to comment
Share on other sites


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

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

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

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

 

Link to comment
Share on other sites


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

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

Улыбнулся) Успехов вам))

  • +1 1
Link to comment
Share on other sites


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

Улыбнулся) Успехов вам))

Спасипотому что, нагдеюсь тут сидят js прогеры, насколько понимаю проблема в пару строчек кода 

Link to comment
Share on other sites


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

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

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

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

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

 

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

Link to comment
Share on other sites


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" можно ускорить или замедлить исполнение скрипи

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

Link to comment
Share on other sites


  • 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 у него бугдет браться из первого оформления заказа без перезаписи.

Edited by xota
Link to comment
Share on other sites


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

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

кто гдержит?
 

 

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

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

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

 

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

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

поняли?

Link to comment
Share on other sites

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

 

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

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

 

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

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

 

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

Link to comment
Share on other sites


  • 3 months later...

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

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

  • +1 2
Link to comment
Share on other sites


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

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

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

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

  • +1 1
Link to comment
Share on other sites


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

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

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

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

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

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.