Перейти к содержанию
dibiliti

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

Рекомендуемые сообщения

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

С Уважением

Поделиться сообщением


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

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

  • +1 1

Поделиться сообщением


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

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

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

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

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

 

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

Поделиться сообщением


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

То, что я изложу ниже, используется в тех случаях, когда регистрация на сайте отсутствует (по просьбе пользователя 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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

  • +1 1

Поделиться сообщением


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

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

  • +1 1

Поделиться сообщением


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

Не понимаю, почему не поставить замечательный модуль deeman -a Модуль Simple - упрощенная регистрация и заказ ?

Там всё что вам нужно!

Поделиться сообщением


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

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

  • +1 1

Поделиться сообщением


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

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

 

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

 

Файл 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');
        },

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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

 

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

 

Файл 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:

Поделиться сообщением


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

у меня вообще нет таких строк (с вашей 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 } ?>

Поделиться сообщением


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

у меня вообще нет таких строк (с вашей 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 } ?>

Поделиться сообщением


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

Незнаю как удалить затроившиеся сообщения, модератор убери пожалуйсто лишние 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

 

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

Поделиться сообщением


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

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

Изменено пользователем lexalex83

Поделиться сообщением


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

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

 

Итак. Чтобы в 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">

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

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

Изменено пользователем lexalex83

Поделиться сообщением


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

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

 

Итак. Чтобы в 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 раза встречается.

 

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

Изменено пользователем wertas

Поделиться сообщением


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

То, что я изложу ниже, используется в тех случаях, когда регистрация на сайте отсутствует (по просьбе пользователя 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: Помогите чайнику....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Как убрать с экрана дисплея внешнего вида  чекаут галочку флажек:

В 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" />

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

Поделиться сообщением


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

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

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

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

Поделиться сообщением


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

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

  • Шаг 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');, которое по-сути нажимает кнопку за пользователя и убрали лишние нагромождения, чтобы не было тормозов.

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

 

Изменено пользователем Snor4
  • +1 1

Поделиться сообщением


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

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

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

Спасибо.

Поделиться сообщением


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

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

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

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

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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