Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


compressorz
 Погделиться

Рекомендованные сообещёния

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

Есть задача убрать 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
Ссылка на комменирий
Погделиться на других сайих


  25.01.2018 в 19:17, compressorz сказал:

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

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

 

Раскрыть  

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

  Циии

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

Раскрыть  

 

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

  Циии

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

Раскрыть  

 

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

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

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

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


  25.01.2018 в 19:28, compressorz сказал:

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

Раскрыть  

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

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

 

 

 

 

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


  25.01.2018 в 19:41, zlob сказал:

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

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

Раскрыть  

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

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

  25.01.2018 в 19:41, zlob сказал:

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

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

 

 

 

 

Раскрыть  

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

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

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


  25.01.2018 в 19:45, Exploits сказал:

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

Раскрыть  

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

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

 

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


  25.01.2018 в 19:48, compressorz сказал:

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

Раскрыть  

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

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


  25.01.2018 в 19:54, zlob сказал:

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

Раскрыть  

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

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


  25.01.2018 в 19:59, compressorz сказал:

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

Раскрыть  

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

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

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

 

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

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


  25.01.2018 в 21:38, 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 год спустя...
  26.01.2018 в 01: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 в 19:28, compressorz сказал:

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

Раскрыть  

кто гдержит?
 

 

  26.01.2018 в 01:52, compressorz сказал:

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

Раскрыть  

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

 

  25.01.2018 в 19:17, compressorz сказал:

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

Раскрыть  

поняли?

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


  10.11.2019 в 07:32, xota сказал:

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

Раскрыть  

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

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


  09.11.2019 в 10:39, xota сказал:

 

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

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

Раскрыть  

 

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

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

 

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

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


  • 3 месяца спустя...

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

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

  • +1 2
Ссылка на комменирий
Погделиться на других сайих


  • 1 год спустя...
  06.03.2020 в 08:46, Pavelsss сказал:

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

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

Раскрыть  

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

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


  • 7 месяэтов спустя...
  16.06.2021 в 20:24, gushelworkshop сказал:

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

Раскрыть  

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

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

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

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

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