Jump to content
dibiliti

[Решено] Оформление заказа спрятать шаг 2

Recommended Posts

Доброго времени суток Уважаемые форумчане! Не нашел на форуме как можно спрятать при оформлении шаг 2 (Профиль & Платежная информация) убрал первый шаг, нашел информацию как убрать 3 и 4, а второй не понятно. Или хотя бы только 3 шаг без 4. Спасибо большое.

С Уважением

Share this post


Link to post
Share on other sites

Уважаемый dibiliti :-D  Вы можете сказать конкретно, что хотите видеть в форме оформления заказа? Здесь можно сократить все до двух шагов. Например: Шаг 1 - Личные данные и адрес доставки; Шаг 2 - подтверждение заказа. В вашем вопросе я не прослеживаю конкретики, поэтому и не отвечу сейчас. Объясните толково и я постараюсь помочь.

  • +1 1

Share this post


Link to post
Share on other sites

Уважаемый dibiliti :-D  Вы можете сказать конкретно, что хотите видеть в форме оформления заказа? Здесь можно сократить все до двух шагов. Например: Шаг 1 - Личные данные и адрес доставки; Шаг 2 - подтверждение заказа. В вашем вопросе я не прослеживаю конкретики, поэтому и не отвечу сейчас. Объясните толково и я постараюсь помочь.

Доброго утра! Извиняюсь что изначально четко не сформулировал. В форме хотелось бы видеть: 

Шаг 3: Адрес доставки
Шаг 4: Способ доставки
Шаг 5: Способ оплаты
Шаг 6: Подтверждение заказа

(Убрать Шаг 2: Профиль & Платежная информация)

 

Как сократить всё до двух я тоже вроде нашел, а вот как убрать один шаг (второй) не нашел. Буду очень благодарен если ответите. Спасибо. 

Share this post


Link to post
Share on other sites

То, что я изложу ниже, используется в тех случаях, когда регистрация на сайте отсутствует (по просьбе пользователя dibiliti в ЛС)

 

Значит так... Делать будем следующее:

 

  • Шаг 1. Персональные данные и Адрес доставки
  • Шаг 2. Способ доставки
  • Шаг 3. Способ оплаты
  • Шаг 4. Подтверждение заказа

 

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

 

Открываем файл \catalog\view\theme\{Ваша_тема}\template\checkout\login.tpl.

 

Находим в нем код:

<input type="radio" name="account" value="register" id="register" checked="checked"/>
 <?php } else { ?>
 <input type="radio" name="account" value="register" id="register" />
 <?php } ?>
 <b><?php echo $text_register; ?></b></label>
 <br />
 <?php if ($guest_checkout) { ?>
 <label for="guest">
 <?php if ($account == 'guest') { ?>
 <input type="radio" name="account" value="guest" id="guest" checked="checked" />
 <?php } else { ?>
 <input type="radio" name="account" value="guest" id="guest" />

и меняем его на следующее

<input type="radio" name="account" value="register" id="register" />
 <?php } else { ?>
 <input type="radio" name="account" value="register" id="register" />
 <?php } ?>
 <b><?php echo $text_register; ?></b></label>
 <br />
 <?php if ($guest_checkout) { ?>
 <label for="guest">
 <?php if ($account == 'guest') { ?>
 <input type="radio" name="account" value="guest" id="guest" checked="checked" />
 <?php } else { ?>
 <input type="radio" name="account" value="guest" id="guest" checked="checked" />

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

 

Для этого в этом же файле в самом верху вставляем скрипт:

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

Все, наш OpenCart будет игнорировать первый шаг и сразу направлять покупателя ко второму шагу. Осталось лишь в таблице стилей скрыть этот шаг.

 

Открываем файл \catalog\view\theme\{Ваша_тема}\stylesheet\stylesheet.css и добавляем:

#checkout {
 display:none; 
}

Идем дальше.

 

Открываем файл \catalog\view\theme\{Ваша_тема}\template\checkout\guest.tpl

 

Находим в нем код:

<?php if ($shipping_required) { ?>
<div style="clear: both; padding-top: 15px; border-top: 1px solid #DDDDDD;">
  <?php if ($shipping_address) { ?>
  <input type="checkbox" name="shipping_address" value="1" id="shipping" checked="checked" />
  <?php } else { ?>
  <input type="checkbox" name="shipping_address" value="1" id="shipping" />
  <?php } ?>
  <label for="shipping"><?php echo $entry_shipping; ?></label>
  <br />
  <br />
  <br />
</div>
<?php } ?>

и меняем его на следующее

<?php if ($shipping_required) { ?>
<div style="display:none">
  <?php if ($shipping_address) { ?>
  <input type="checkbox" name="shipping_address" value="1" id="shipping" checked="checked" />
  <?php } else { ?>
  <input type="checkbox" name="shipping_address" value="1" id="shipping" checked="checked" />
  <?php } ?>
  <label for="shipping"><?php echo $entry_shipping; ?></label>
  <br />
  <br />
  <br />
</div>
<?php } ?>

Удаляем дублирование адреса доставки (стандартный Шаг 3)

 

Открываем файл \catalog\view\theme\{Ваша_тема}\template\checkout\checkout.tpl

 

Находим в нем код:

<div id="shipping-address">
      <div class="checkout-heading"><?php echo $text_checkout_shipping_address; ?></div>
      <div class="checkout-content"></div>
</div>

и меняем его на следующее

<div style="display:none" id="shipping-address">
      <div class="checkout-heading"><?php echo $text_checkout_shipping_address; ?></div>
      <div class="checkout-content"></div>
</div>

Вроде бы и все - дело сделано))) Осталось исправить маленькую деталь.

 

Качаем вот это checkout.php и запихиваем по адресу \catalog\language\russian\checkout\

 

...этим мы исправим названия шагов при оформлении заказа.

 

Ну, теперь точно все. Должно работать :) Если что-то пропустил - пишите - исправим)))

 

P.S. Не забываем ставить +  :)

 

  • +1 6

Share this post


Link to post
Share on other sites

Выражаю огромную благодарность пользователю  DariyGRAY за помощь. Всё получилось, всё работает. Спасибо.  :wink:

Share this post


Link to post
Share on other sites

При существующей регистрации, как это сделать?

  • +1 1

Share this post


Link to post
Share on other sites

Действительно, как это сделать при существующей регистрации? Если оформлять заказ незарегистрированным пользователем, то всё работает как надо. Однако, если пользователь зарегистрирован, то шаг “адрес доставки” не пропускается автоматом, а если он ещё и скрыт, то оформление просто встаёт: Завершаю первый шаг и должен открыться следующий- выбор способа доставки, но он не открывается. Вероятно, какой-то скрипт нужно прописать на пропуск второго шага, однако не нашёл какой. Пробовал редактировать предлагаемый скрипт для пропуска предложения о регистрации, но это не помогло. Может у вас есть какие-то дополнительные соображения, что можно сделать? Сколько не искал, но не нашёл информации об этом. Пробовал адаптировать действия при оформлении гостем, но это не помогло, так что вопрос остаётся открытым, и думаю он достаточно важен, чтобы обратить на него внимание.

  • +1 1

Share this post


Link to post
Share on other sites

Потому что этот модуль платный...присоединяюсь к вопросу  пользователя ilia: как убрать 2-й или 3-й шаг оформления заказа с сохранением пошаговости для зарегистрированного пользователя?

  • +1 1

Share this post


Link to post
Share on other sites

Если кто-нибудь, как и я, придет сюда из поисковика, не найдя ни одного простого и бесплатного рабочего решения в интернете (а их на данный момент действительно нет), то вот как я справился с задачей.

 

Как убрать второй шаг (платежная информация) для зарегистрированного пользователя.

 

Файл catalog/view/theme/тема/template/checkout/checkout.tpl

 

Найти (строка 48)

        <?php } else { ?>
        <div class="panel panel-default">
          <div class="panel-heading">
            <h4 class="panel-title"><?php echo $text_checkout_payment_address; ?></h4>
          </div>
          <div class="panel-collapse collapse" id="collapse-payment-address">
            <div class="panel-body"></div>
          </div>
        </div>
        <?php } ?>

Заменить на

        <?php } else { ?>
        <div class="panel panel-default"<?php if ($this->customer->isLogged()) echo " style='display: none'"; ?>>
          <div class="panel-heading">
            <h4 class="panel-title"><?php echo $text_checkout_payment_address; ?></h4>
          </div>
          <div class="panel-collapse collapse" id="collapse-payment-address">
            <div class="panel-body"></div>
          </div>
        </div>
        <?php } ?>

Найти (строка 141)

    $.ajax({
        url: 'index.php?route=checkout/payment_address',
        dataType: 'html',
        success: function(html) {
            $('#collapse-payment-address .panel-body').html(html);
            
			$('#collapse-payment-address').parent().find('.panel-heading .panel-title').html('<a href="#collapse-payment-address" data-toggle="collapse" data-parent="#accordion" class="accordion-toggle"><?php echo $text_checkout_payment_address; ?> <i class="fa fa-caret-down"></i></a>');

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

Заменить на

    $.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" 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');
        },

На других темах строки будут другими, но общий принцип понятен.

Информацию о том, как отключить/скрыть/переименовать другие шаги легко найти в интернете, а вот именно с этим шагом была засада.

Share this post


Link to post
Share on other sites

А как вы спрятали шаг?

Share this post


Link to post
Share on other sites

Если кто-нибудь, как и я, придет сюда из поисковика, не найдя ни одного простого и бесплатного рабочего решения в интернете (а их на данный момент действительно нет), то вот как я справился с задачей.

 

Как убрать второй шаг (платежная информация) для зарегистрированного пользователя.

 

Файл catalog/view/theme/тема/template/checkout/checkout.tpl

 

Найти (строка 48)

        <?php } else { ?>
        <div class="panel panel-default">
          <div class="panel-heading">
            <h4 class="panel-title"><?php echo $text_checkout_payment_address; ?></h4>
          </div>
          <div class="panel-collapse collapse" id="collapse-payment-address">
            <div class="panel-body"></div>
          </div>
        </div>
        <?php } ?>

Заменить на

        <?php } else { ?>
        <div class="panel panel-default"<?php if ($this->customer->isLogged()) echo " style='display: none'"; ?>>
          <div class="panel-heading">
            <h4 class="panel-title"><?php echo $text_checkout_payment_address; ?></h4>
          </div>
          <div class="panel-collapse collapse" id="collapse-payment-address">
            <div class="panel-body"></div>
          </div>
        </div>
        <?php } ?>

Найти (строка 141)

    $.ajax({
        url: 'index.php?route=checkout/payment_address',
        dataType: 'html',
        success: function(html) {
            $('#collapse-payment-address .panel-body').html(html);
            
			$('#collapse-payment-address').parent().find('.panel-heading .panel-title').html('<a href="#collapse-payment-address" data-toggle="collapse" data-parent="#accordion" class="accordion-toggle"><?php echo $text_checkout_payment_address; ?> <i class="fa fa-caret-down"></i></a>');

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

Заменить на

    $.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" 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');
        },

На других темах строки будут другими, но общий принцип понятен.

Информацию о том, как отключить/скрыть/переименовать другие шаги легко найти в интернете, а вот именно с этим шагом была засада.

у меня вообще нет таких строк (с вашей 48 строки), а поменяв код ajax вообще не один шаг открываться не стал

Остается актуальным вопрос: у зарегистрированного пользователя скрыв шаг "Адрес доставки" после платежной информации не переходит на "Способ доставки"  :cry:

Share this post


Link to post
Share on other sites

у меня вообще нет таких строк (с вашей 48 строки), а поменяв код ajax вообще не один шаг открываться не стал

Остается актуальным вопрос: у зарегистрированного пользователя скрыв шаг "Адрес доставки" после платежной информации не переходит на "Способ доставки"  :cry:

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

Далее изменил файлы:

catalog/view/theme/тема/template/checkout/checkout.tpl[/background]

ищем там

 <?php if (!$logged) { ?>

    <div id="payment-address">

      <div class="checkout-heading"><span><?php echo $text_checkout_account; ?></span></div>

      <div class="checkout-content"></div>

    </div>

    <?php } else { ?>

    <div id="payment-address">

      <div class="checkout-heading"><span><?php echo $text_checkout_payment_address; ?></span></div>

      <div class="checkout-content"></div>

    </div>

    <?php } ?>

Делаем (добавл код, выделенный красным), т.е. безусловно скрываем как и у зарегистрированных так и не у зарегистрированных. 

 <?php if (!$logged) { ?>

    <div id="payment-address">

      <div class="checkout-heading"<?php echo " style='display: none'"; ?>><span><?php echo $text_checkout_account; ?></span></div>

      <div class="checkout-content"></div>

    </div>

    <?php } else { ?>

    <div id="payment-address">

      <div class="checkout-heading"<?php echo " style='display: none'"; ?>><span><?php echo $text_checkout_payment_address; ?></span></div>

      <div class="checkout-content"></div>

    </div>

    <?php } ?>

Далее в этом же файле ниже нужно найти примерно такой код

<?php } else { ?>

$(document).ready(function() {

$.ajax({

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

dataType: 'html',

success: function(html) {

$('#payment-address .checkout-content').html(html);

 

$('#payment-address .checkout-content').slideDown('slow');

},

error: function(xhr, ajaxOptions, thrownError) {

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

}

});

});

<?php } ?>

и исправить его на такой, т.к.. у меня 3 и 4 пункты скрыты сами по себе, потому что то ли не включены способы доставки вобщем в настройках магазина в админке, они не выпадают сами без моего вмешательства. Но .т.к мы скрываем 2-й пункт а после него по смыслу мне нужно уже сразу на 5-й, то я указываю именно payment-method , который соответсвует 5-му пункту, вместо 2-го, которому соответсвует payment-address

<?php } else { ?>

$(document).ready(function() {

$.ajax({

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

dataType: 'html',

success: function(html) {

$('#payment-method .checkout-content').html(html);

 

$('#payment-method .checkout-content').slideDown('slow');

},

error: function(xhr, ajaxOptions, thrownError) {

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

}

});

});

<?php } ?>

Share this post


Link to post
Share on other sites

у меня вообще нет таких строк (с вашей 48 строки), а поменяв код ajax вообще не один шаг открываться не стал

Остается актуальным вопрос: у зарегистрированного пользователя скрыв шаг "Адрес доставки" после платежной информации не переходит на "Способ доставки"  :cry:

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

Далее изменил файлы:

catalog/view/theme/тема/template/checkout/checkout.tpl[/background]

ищем там

 <?php if (!$logged) { ?>

    <div id="payment-address">

      <div class="checkout-heading"><span><?php echo $text_checkout_account; ?></span></div>

      <div class="checkout-content"></div>

    </div>

    <?php } else { ?>

    <div id="payment-address">

      <div class="checkout-heading"><span><?php echo $text_checkout_payment_address; ?></span></div>

      <div class="checkout-content"></div>

    </div>

    <?php } ?>

Делаем (добавл код, выделенный красным), т.е. безусловно скрываем как и у зарегистрированных так и не у зарегистрированных. 

 <?php if (!$logged) { ?>

    <div id="payment-address">

      <div class="checkout-heading"<?php echo " style='display: none'"; ?>><span><?php echo $text_checkout_account; ?></span></div>

      <div class="checkout-content"></div>

    </div>

    <?php } else { ?>

    <div id="payment-address">

      <div class="checkout-heading"<?php echo " style='display: none'"; ?>><span><?php echo $text_checkout_payment_address; ?></span></div>

      <div class="checkout-content"></div>

    </div>

    <?php } ?>

Далее в этом же файле ниже нужно найти примерно такой код

<?php } else { ?>

$(document).ready(function() {

$.ajax({

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

dataType: 'html',

success: function(html) {

$('#payment-address .checkout-content').html(html);

 

$('#payment-address .checkout-content').slideDown('slow');

},

error: function(xhr, ajaxOptions, thrownError) {

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

}

});

});

<?php } ?>

и исправить его на такой, т.к.. у меня 3 и 4 пункты скрыты сами по себе, потому что то ли не включены способы доставки вобщем в настройках магазина в админке, они не выпадают сами без моего вмешательства. Но .т.к мы скрываем 2-й пункт а после него по смыслу мне нужно уже сразу на 5-й, то я указываю именно payment-method , который соответсвует 5-му пункту, вместо 2-го, которому соответсвует payment-address

<?php } else { ?>

$(document).ready(function() {

$.ajax({

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

dataType: 'html',

success: function(html) {

$('#payment-method .checkout-content').html(html);

 

$('#payment-method .checkout-content').slideDown('slow');

},

error: function(xhr, ajaxOptions, thrownError) {

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

}

});

});

<?php } ?>

Share this post


Link to post
Share on other sites

Незнаю как удалить затроившиеся сообщения, модератор убери пожалуйсто лишние 14, 15 сообщения, а в этом я закончу обяснение, начатое в 13 посте

что бы при открытии 5 пункта не ругался сайт на методы оплаты, т.к. они из за пропуска 2-го пункта не был определен адрес доставки, то укажем его явно брать из адреса клиента в файле

catalog/controller/checkout/payment_method.php

 

перед строками пропишите строку (красным выделена

        $this->session->data['payment_address_id'] = $this->customer->getAddressId();

 

if ($this->customer->isLogged() && isset($this->session->data['payment_address_id'])) {
$payment_address = $this->model_account_address->getAddress($this->session->data['payment_address_id']);
} elseif (isset($this->session->data['guest'])) {
$payment_address = $this->session->data['guest']['payment'];
}
 
ну и косметические доработки в файле с названиями пунктов

catalog/language/russian/checkout/checkout.php

там названия пунктов переписать для красоты, что бы не 1. 5. и 6 а красиво 1,2 и 3

 

Рекомендую сохранять копии оригинальных файлов перед изменением.

Share this post


Link to post
Share on other sites

if ($this->customer->isLogged() && isset($this->session->data['payment_address_id'])) {

$payment_address = $this->model_account_address->getAddress($this->session->data['payment_address_id']);
} elseif (isset($this->session->data['guest'])) {
$payment_address = $this->session->data['guest']['payment'];
}
 
 

там такая строка два раза встречается. перед какойстроку дописывать та что красным???

 

перед той и той добавлял , все равно ошибка 

post-683451-0-89176700-1454506557_thumb.png

Edited by lexalex83

Share this post


Link to post
Share on other sites

Я нашел решение проще!

 

Итак. Чтобы в opencart убрать  второй шаг, платежная информация надо:

 

 

1) Открыть  catalog\view\theme\l<ВАША ТЕМА>\template\checkout\checkout.tpl

 

изменить в нем код 

$('#payment-address .checkout-content').html(html); 
$('#payment-address .checkout-content').slideDown('slow'); 

на код:

$('#payment-address .checkout-content').html(html);
$('#payment-address #button-payment-address').click(); 

2) найти в этом же файле строку (встречается 2 раза)

<div id="payment-address">

и скрыть этот див,  заменив строку на

<div id="payment-address" style="display:none">

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

А сам див с вводом платежной инфы - скроется.

Edited by lexalex83

Share this post


Link to post
Share on other sites

Я нашел решение проще!

 

Итак. Чтобы в opencart убрать  второй шаг, платежная информация надо:

 

 

1) Открыть  catalog\view\theme\l<ВАША ТЕМА>\template\checkout\checkout.tpl

 

изменить в нем код 

$('#payment-address .checkout-content').html(html); 
$('#payment-address .checkout-content').slideDown('slow'); 

на код:

$('#payment-address .checkout-content').html(html);
$('#payment-address #button-payment-address').click(); 

2) найти в этом же файле строку (встречается 2 раза)

<div id="payment-address">

и скрыть этот див,  заменив строку на

<div id="payment-address" style="display:none">

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

А сам див с вводом платежной инфы - скроется.

 

Код

 

 

 

$('#payment-address .checkout-content').html(html); 

$

('#payment-address .checkout-content').slideDown('slow'); 

 

тоже 2 раза встречается.

 

Всё прекрасно работает.

Edited by wertas

Share this post


Link to post
Share on other sites

То, что я изложу ниже, используется в тех случаях, когда регистрация на сайте отсутствует (по просьбе пользователя dibiliti в ЛС)

 

Значит так... Делать будем следующее:

 

  • Шаг 1. Персональные данные и Адрес доставки
  • Шаг 2. Способ доставки
  • Шаг 3. Способ оплаты
  • Шаг 4. Подтверждение заказа

 

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

 

Открываем файл \catalog\view\theme\{Ваша_тема}\template\checkout\login.tpl.

 

Находим в нем код:

<input type="radio" name="account" value="register" id="register" checked="checked"/>
 <?php } else { ?>
 <input type="radio" name="account" value="register" id="register" />
 <?php } ?>
 <b><?php echo $text_register; ?></b></label>
 <br />
 <?php if ($guest_checkout) { ?>
 <label for="guest">
 <?php if ($account == 'guest') { ?>
 <input type="radio" name="account" value="guest" id="guest" checked="checked" />
 <?php } else { ?>
 <input type="radio" name="account" value="guest" id="guest" />

и меняем его на следующее

<input type="radio" name="account" value="register" id="register" />
 <?php } else { ?>
 <input type="radio" name="account" value="register" id="register" />
 <?php } ?>
 <b><?php echo $text_register; ?></b></label>
 <br />
 <?php if ($guest_checkout) { ?>
 <label for="guest">
 <?php if ($account == 'guest') { ?>
 <input type="radio" name="account" value="guest" id="guest" checked="checked" />
 <?php } else { ?>
 <input type="radio" name="account" value="guest" id="guest" checked="checked" />

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

 

Для этого в этом же файле в самом верху вставляем скрипт:

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

Все, наш OpenCart будет игнорировать первый шаг и сразу направлять покупателя ко второму шагу. Осталось лишь в таблице стилей скрыть этот шаг.

 

Открываем файл \catalog\view\theme\{Ваша_тема}\stylesheet\stylesheet.css и добавляем:

#checkout {
 display:none; 
}

Идем дальше.

 

Открываем файл \catalog\view\theme\{Ваша_тема}\template\checkout\guest.tpl

 

Находим в нем код:

<?php if ($shipping_required) { ?>
<div style="clear: both; padding-top: 15px; border-top: 1px solid #DDDDDD;">
  <?php if ($shipping_address) { ?>
  <input type="checkbox" name="shipping_address" value="1" id="shipping" checked="checked" />
  <?php } else { ?>
  <input type="checkbox" name="shipping_address" value="1" id="shipping" />
  <?php } ?>
  <label for="shipping"><?php echo $entry_shipping; ?></label>
  <br />
  <br />
  <br />
</div>
<?php } ?>

и меняем его на следующее

<?php if ($shipping_required) { ?>
<div style="display:none">
  <?php if ($shipping_address) { ?>
  <input type="checkbox" name="shipping_address" value="1" id="shipping" checked="checked" />
  <?php } else { ?>
  <input type="checkbox" name="shipping_address" value="1" id="shipping" checked="checked" />
  <?php } ?>
  <label for="shipping"><?php echo $entry_shipping; ?></label>
  <br />
  <br />
  <br />
</div>
<?php } ?>

Удаляем дублирование адреса доставки (стандартный Шаг 3)

 

Открываем файл \catalog\view\theme\{Ваша_тема}\template\checkout\checkout.tpl

 

Находим в нем код:

<div id="shipping-address">
      <div class="checkout-heading"><?php echo $text_checkout_shipping_address; ?></div>
      <div class="checkout-content"></div>
</div>

и меняем его на следующее

<div style="display:none" id="shipping-address">
      <div class="checkout-heading"><?php echo $text_checkout_shipping_address; ?></div>
      <div class="checkout-content"></div>
</div>

Вроде бы и все - дело сделано))) Осталось исправить маленькую деталь.

 

Качаем вот это attachicon.gifcheckout.php и запихиваем по адресу \catalog\language\russian\checkout\

 

...этим мы исправим названия шагов при оформлении заказа.

 

Ну, теперь точно все. Должно работать :) Если что-то пропустил - пишите - исправим)))

 

P.S. Не забываем ставить +  :)

Убрал шаг 3, после есть ПРОБЛЕМА:  МОЙ АДРЕС ДОСТАВКИ СОВПАДАЕТ С ПЛАТЁЖНЫМ. -если не отметить/подтвердить-то в следующий шаг попасть невозможно! Вопрос: Как сделать, чтобы  "МОЙ АДРЕС ДОСТАВКИ СОВПАДАЕТ С ПЛАТЁЖНЫМ" был подтвержден постоянно по умолчанию и был невидимым на экране и таким образом был свободный переход к Шаг 2: Способ доставки покупателем?  :mellow: Помогите чайнику....

Share this post


Link to post
Share on other sites
Как убрать с экрана дисплея внешнего вида  чекаут галочку флажек:

В quest.tpl

<div style="clear: both; padding-top: 15px; border-top: 1px solid #DDDDDD;">

  <?php if ($shipping_address) { ?>

  <input type="checkbox" name="shipping_address" value="1" id="shipping" checked="checked" />

меняем


<div style="display: none">

  <?php if ($shipping_address) { ?>

  <input type="checkbox" name="shipping_address" value="1" id="shipping" checked="checked" />

И НА ЭКРАНЕ НИЧЕГО НЕ ВИДНО!!! А функция то работает Еххаааа!!! Даже чайники что то могут!

Share this post


Link to post
Share on other sites

А может кто-то объяснить, как все же оставить 

  • Шаг 1. Персональные данные и Адрес доставки
  • Шаг 2. Способ доставки
  • Шаг 3. Способ оплаты
  • Шаг 4. Подтверждение заказа

с вариантом, когда пользователь зарегистрирован и когда происходит оформление заказа без регистрации для версии 2.1.0.1 а то тут половину понятно как делать, а половину нет. и только один человек версию движка указал

Share this post


Link to post
Share on other sites

А может кто-то объяснить, как все же оставить 

  • Шаг 1. Персональные данные и Адрес доставки
  • Шаг 2. Способ доставки
  • Шаг 3. Способ оплаты
  • Шаг 4. Подтверждение заказа

с вариантом, когда пользователь зарегистрирован и когда происходит оформление заказа без регистрации для версии 2.1.0.1 а то тут половину понятно как делать, а половину нет. и только один человек версию движка указал

 

Тут все описано. У меня для оформления с регистрацией все получилось на версии ocStore 2.1.0.2.1

На всякий случай продублирую, т.к. сам долго искал.

 

 

В общем, создал свой интернет магазин на базе OpenCart 2.0. Для уменьшения времени оформления заказа было решено сократить регистрацию. Убрал часть шагов и полей(как это делается можно без проблем найти в Гугле), включая 3й шаг(Адрес доставки). Абсолютно бесполезный по своей сути пункт. Убирал по этой схеме. Видимо, авторы сего не особо вдавались в подробности решения задачи, поэтому на практике регулярно возникала проблема: из-за того, что в базу недоотсылалась часть информации о адресе доставке, в четвёртом шаге(Способ доставки) отсутствовали способы доставки(да-да, извините за тавтологию).

Решение оказалось достаточно банальное и даже короче, чем исходное.

Первое — это визуально убрать 3й шаг. Все махинации проводятся в /catalog/view/theme/default/template/checkout.

Сделайте бекап, всякое случиться может!

<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>

Важно! Способ не работает, если вы комментируете код. Так что просто добавьте атрибут display: none;.

Второе — вот этот код:

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);

			$('#button-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; ?>');
                    },   

Как видите, мы добавили событие $('#button-shipping-address').trigger('click');, которое по-сути нажимает кнопку за пользователя и убрали лишние нагромождения, чтобы не было тормозов.

На этом всё, надеюсь, информация оказалось полезной!

 

Edited by Snor4
  • +1 1

Share this post


Link to post
Share on other sites

Здравствуйте,

Версия ocStore 1.5.5.1.2
Подскажите как убрать в /checkout/ некоторые обязательные поля (то есть отключить их)? Например, индекс, улица чтоб клиентам было проще заполнять форму, а то много лишних полей требуют заполнения.

Спасибо.

Share this post


Link to post
Share on other sites

Тут все описано. У меня для оформления с регистрацией все получилось на версии ocStore 2.1.0.2.1

На всякий случай продублирую, т.к. сам долго искал.

Забыл поблагодарить! Спасибо большое! все получилось.  

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.


  • 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.