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

10.12.2015 03:06

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

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
Скорее всего у Вас не стоит галочка на пункте "Я прочитал Terms & Conditions и согласен с условиями " и из-за этого скрипт не может нажать кнопку "Далее".

Статью дополнил, посмотрите, пожалуйста.
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
Здравствуйте,все сделал , работает ,спасибо . Вопрос такой, можете подробно описать последний шаг "В заключении открываем файл: /catalog/language/russian/checkout/checkout.php в котором изменяем заголовки для оставшихся двух шагов."

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

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

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

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

Я смотрю на catalogcontrollercheckoutconfirm.php
Но там как-то не особо интуитивно:)
komolov - 09.03.2016 08:26:19
- 0    + 0
Спасибо! Супер!
Игорь - 19.03.2016 18:01:37
- 0    + 0
Здравствуйте. Не отключается "способы оплаты", галочка стоит, код поменял на Ваш. И еще, когда убираю первый шаг "регистрация", не всегда открывается меню заказа (где поля: имя, тел., адрес и .т.д.), а если и открывается, то с задержкой 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
Еще забыл, заказчику в письме приходит: "Способ оплаты: оплата наличными при получении товара." Это понятно, но как можно изменить саму строку "Оплата наличными при получении товара". Модуль тот же, все тоже, только изменить саму надпись, например просто написать "Оплата наличными или предоплата" или что то в этом плане? В самом модуле это нельзя сделать, смотрел в файлах, тоже не нашел.
Илья - 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
Илья! А как бы отключить в "гармошке" именно шаг "Адрес доставки", а шаг "Способ доставки" оставить?
Алексей - 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.
Очень жду Вашей помощи.