Opencart Убираем шаги оплаты и доставки в оформлении заказа

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

1. Отключаем выбор способа доставки. Открываем /system/library/cart.php, находим функцию:

	public function hasShipping() {
		$shipping = false;

		foreach ($this->getProducts() as $product) {
			if ($product['shipping']) {
				$shipping = true;

				break;
			}
		}

		return $shipping;
	}

В самом начале функции добавляем строчку с отключением доставки, в итоге получается:

	public function hasShipping() {
		return false;
		
		$shipping = false;

		foreach ($this->getProducts() as $product) {
			if ($product['shipping']) {
				$shipping = true;

				break;
			}
		}

		return $shipping;
	}

2. Далее, отключаем выбор способа оплаты. Заходим в админку, открываем: "Мено" -> "Модули" -> "Оплата". Отключаем все способы кроме "Оплата при доставке". Заходим в настройку этого способа оплаты и проверяем его настройки:

Нижняя граница: 0
Статус заказа после оплаты: Complete
Географическая зона: Все регионы
Статус: Включено
Порядок сортировки: 0

Далее открываем файл: /catalog/view/theme/default/template/checkout/payment_method.tpl в самом верху файла добавляем скрипт, который автоматически нажимает кнопку "Далее":

<script>
 $(document).ready(function(){
 setTimeout(function(){
  $('#button-payment-method').trigger('click');
  },1000);
 });
</script>

Чтобы яваскрипт смог нажать кнопку "далее", нужно установить галочку в пункте "Я прочитал Terms & Conditions и согласен с условиями". Находим этот кусочек кода:

    <?php if ($agree) { ?>
    <input type="checkbox" name="agree" value="1" checked="checked" />
    <?php } else { ?>
    <input type="checkbox" name="agree" value="1" />
    <?php } ?>

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

    <input type="checkbox" name="agree" value="1" checked="checked" />

Теперь полностью скрываем этот шаг из гармошки, открываем файл: /catalog/view/theme/default/template/checkout/checkout.tpl, находим следующий код:

        <div class="panel panel-default">
          <div class="panel-heading">
            <h4 class="panel-title"><?php echo $text_checkout_payment_method; ?></h4>
          </div>
          <div class="panel-collapse collapse" id="collapse-payment-method">
            <div class="panel-body"></div>
          </div>
        </div>

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

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

В заключении открываем файл: /catalog/language/russian/checkout/checkout.php в котором изменяем заголовки для оставшихся двух шагов.

useless_steps1

Как обычно, пример можно посмотреть на тестовом сайте.



Ссылка на товар из меню редактирования товара

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

Безопасность opencart

Сегодня я хочу поговорить о безопасности интернет- магазина. В opencart встроен механизм блокировки подбора пароля. К сожалению, он основан на использовании cookie. Этот подход помогает отсеять только живых людей, пытающихся вручную подобрать пароль.


(28) Комментариев

Евгений - 12.12.2015 13:02:08
- 0    + 0
Спасибо Вам огромное! Всё получилось! Теперь оформление заказа всего в 2 шага! ФАНТАСТИКА!!!! )))
Timo - 12.12.2015 13:14:18
- 0    + 0
спасибо. У меня вопросик. Когда клиент залог., как закоментировать строки в шаге, где его просят оставить существующий адрес или изменить его? Ковырчл chekout.tpl но там такой суповой набор )))) Не подскажите какие строки трогать
Алексей - 23.12.2015 23:44:53
- 0    + 0
Подскажите, сделал все, как вы сказали, но на последнем шаге подтверждение заказа не высвечиваеться табличка с заказом, а просто бело пустое место без кнопки подтверждения заказа. Как это исправить?
Вот для наглядности, попробуйте сделать заказ: http://sportmall.com.ua/index.php?route=checkout/checkout
Илья - 24.12.2015 01:24:39
- 0    + 0
Скорее всего у Вас не стоит галочка на пункте &quot;Я прочитал Terms & Conditions и согласен с условиями &quot; и из-за этого скрипт не может нажать кнопку &quot;Далее&quot;.

Статью дополнил, посмотрите, пожалуйста.
Jacob - 06.01.2016 23:33:12
- 0    + 0
Привет admin!
Есть идеи как всунуть табличку с покупками и стоимостью из шага «подтверждение заказа»,в шаг «платежная информация»?
Ведь таким образом можно воплотить мечту многих,избавится от гармошки и сделать все на одной странице скрыв последний шаг!
mixet - 13.01.2016 13:44:03
- 0    + 0
Согласен с Jacob. Получился бы идеальный вариант.
Илья - 13.01.2016 14:33:44
- 0    + 0
Jacob, mixet, теоретически избавиться от гармошки не так уж и сложно. Но тогда, скорее всего, придётся чем-нибудь пожертвовать. Например доставкой, или, может быть, модулями скидок и купонов.

Будет время попробую сделать, если получится оформлю в бесплатный модуль.
mixet - 20.01.2016 21:01:52
- 0    + 0
Можно обойтись и без модуля, если подскажите всем, как убрать гармошку или хотя бы сделать ее раскрытой с 1 кнопкой. Ж)
vit16 - 14.02.2016 12:46:03
- 0    + 0
Здравствуйте,все сделал , работает ,спасибо . Вопрос такой, можете подробно описать последний шаг &quot;В заключении открываем файл: /catalog/language/russian/checkout/checkout.php в котором изменяем заголовки для оставшихся двух шагов.&quot;

И как можно убрать &quot;индекс&quot; в оформлении заказа?
Илья - 14.02.2016 15:26:26
- 0    + 0
В файле /catalog/language/russian/checkout/checkout.php содержатся переводы с английского на русский для страницы оформления заказа. И т.к изначально нумерация шагов отличалась, то теперь там нужно всё подправить. Индекс убирается как и другие не нужные поля: <a href=&quot;http://allwebstuff.info/быстрый-заказ-opencart-2/&quot;>http://allwebstuff.info/быстрый-заказ-opencart-2/</a>
Дмитрий - 18.02.2016 19:43:07
- 0    + 0
Здравствуйте!
Сдела все по инструкции - получилось хорошо. Спасибо! Но остался вопрос: если доставка иногда платная (скажем до 2000 руб), как сделать чтобы она суммировалась в конце заказом?

Учитывать в заказе - включено
Доставка (3)
Промежуточный итог (1)
Итого (9)

Включено:
Доставка в зависимости от суммы заказа
Фиксированная стоимость доставки
Бесплатная доставка
Самовывоз из магазина

Я так понимаю, что из-за отключения шагов она не суммируется?
Илья - 19.02.2016 01:18:52
- 0    + 0
Да, если нужна рабочая доставка то её отключать нельзя. Либо, нужно вручную, в модуле &quot;Итого&quot;, прибавлять нужную сумму.
Дмитрий - 19.02.2016 11:39:07
- 0    + 0
Ага, понятно, спасибо.
Насчет вручную - это условие прописать в последнем шаге я так понимаю?
типа если Предварительная стоимость (sub_total - это же оно?) меньше &quot;2000&quot; и &quot;регион/область&quot; (zone или zone_id ?) равен &quot;Москва&quot;, то к Предварительной стоимости прибавить &quot;300&quot; и вывести в поле Итого (total).
А не знаете где этот модуль находится?

Я смотрю на catalogcontrollercheckoutconfirm.php
Но там как-то не особо интуитивно:)
komolov - 09.03.2016 08:26:19
- 0    + 0
Спасибо! Супер!
Игорь - 19.03.2016 18:01:37
- 0    + 0
Здравствуйте. Не отключается &quot;способы оплаты&quot;, галочка стоит, код поменял на Ваш. И еще, когда убираю первый шаг &quot;регистрация&quot;, не всегда открывается меню заказа (где поля: имя, тел., адрес и .т.д.), а если и открывается, то с задержкой 2-3 сек. Все делаю как написано, несколько раз переделывал.Что может быть? Версия 2.0.3.1
Илья - 20.03.2016 01:21:16
- 0    + 0
Если наблюдается нестабильное поведение, то открывается, то не открывается, это значит проблема не в инструкции. Ищите проблему либо в хостинге, либо в подключённых скриптах.
Игорь - 04.04.2016 09:36:59
- 0    + 0
Здравствуйте. Поля убрал и индекс тоже. Но вот вопрос: заказчику приходит письмо, где указано и область и индекс и страна (по умолчанию), но ведь в заказе этого нет. Заказчику эта информация не нужна, как можно сделать, что бы в письме к заказчику этого не было? Спасибо.
Игорь - 04.04.2016 12:25:53
- 0    + 0
Еще забыл, заказчику в письме приходит: &quot;Способ оплаты: оплата наличными при получении товара.&quot; Это понятно, но как можно изменить саму строку &quot;Оплата наличными при получении товара&quot;. Модуль тот же, все тоже, только изменить саму надпись, например просто написать &quot;Оплата наличными или предоплата&quot; или что то в этом плане? В самом модуле это нельзя сделать, смотрел в файлах, тоже не нашел.
Илья - 05.04.2016 10:36:37
- 0    + 0
Игорь, всё что связано с письмом для клиента, находится в шаблоне: /catalog/view/theme/default/template/mail/order.tpl
Максим - 09.04.2016 10:13:10
- 0    + 0
Notice: Error: Could not load template /home/m/logindomen/public_html/catalog/view/theme/default/template/checkout/shipping_method.tpl! in /home/m/login/domen/public_html/system/engine/loader.php on line 91

скачал готовый архив, распаков на хостинг. и..... вот такая ошибка выходит....
Илья - 09.04.2016 14:51:46
- 0    + 0
Очень подозрительная ошибка, я никаких изменений в system/engine/loader.php не делал. Скиньте, пожалуйста, ссылку, по которой скачивали архив.
Алексей - 12.04.2016 13:37:45
- 0    + 0
Илья! А как бы отключить в &quot;гармошке&quot; именно шаг &quot;Адрес доставки&quot;, а шаг &quot;Способ доставки&quot; оставить?
Алексей - 12.04.2016 14:58:00
- 0    + 0
Допер сам))

Сделал вот так:








Ден - 25.08.2016 03:48:22
- 0    + 0
что именно поменять в /catalog/language/russian/checkout/checkout.php . На пальцах пожалуйста
Ден - 25.08.2016 04:21:12
- 0    + 0
Notice: Indirect modification of overloaded property ControllerCheckoutConfirm::$data has no effect in C:OpenServerOpenServerdomainslocalhost estcatalogcontrollercheckoutconfirm.php on line 12Notice: Undefined index: payment in C:OpenServerOpenServerdomainslocalhost estcatalogcontrollercheckoutconfirm.php on line 504Notice: Indirect modification of overloaded property ControllerCheckoutConfirm::$data has no effect in C:OpenServerOpenServerdomainslocalhost estcatalogcontrollercheckoutconfirm.php on line 851
Fatal error: Call to undefined method ControllerCheckoutConfirm::render() in C:OpenServerOpenServerdomainslocalhost estcatalogcontrollercheckoutconfirm.php on line 860


На последнем подтверждающем шаге такая ошибка
Ден - 25.08.2016 05:28:56
- 0    + 0
Все работает, автору +.
Андрей - 09.09.2016 11:10:26
- 0    + 0
Добрый день.
Возникла проблема в скрытии способов доставки.
Делал все по инструкции. После шага в котором мы редактируем /system/library/cart.php
пропадает способ доставки.
Андрей - 15.09.2016 09:58:08
- 0    + 0
Илья, добрый день!
После отключения способа доставки /system/library/cart.php отключается так же способ оплаты и дальше подтверждение не идет.
файл cart.php у меня находится чуток далее чем у Вас в примере /system/library/cart/cart.php
версия опенкарта 2.3.
Очень жду Вашей помощи.