Фильтрация способов оплаты по весу корзины в OpenCart

Фильтрация способов оплаты по весу корзины в OpenCart

От автора: сегодня мы поговорим о том, как фильтровать в OpenCart способы оплаты. Если вы разработчик, вы должны часто попадать в ситуации, когда необходимо менять базовое поведение фреймворка. Такая возможность может быть заложена в UI админки, что уже хорошо! Однако для сложной кастомизации нужно что-то большее – нужно переписать код фреймворка.

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

Если вы активно разрабатываете на OpenCart, то можете знать, что способы оплаты можно фильтровать по минимальной сумме оплаты в корзине. Например, можно не показывать способ COD, если сумма в корзине меньше определенной суммы. Эта функция встроенная, ее можно выбрать при настройке способа оплаты через back end.

В этом уроке мы расширим эту функцию и попробуем ограничить способы оплаты по весу корзины. Мы обсудим, как фильтровать COD метод в корзине, если сумма заказа меньше предварительно заданной суммы. Для этого придется внести изменения в код, так как через back end такого не сделаешь.

Ранее мы уже сказали, что файлы ядра фреймворка изменять нельзя, поэтому у нас остается только один вариант – OCMOD. Не беспокойтесь, если вы не слышали про него, я расскажу про этот способ чуть ниже.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Предполагаю, что вы используете последнюю версию OpenCart. На момент написания статьи это OpenCart 2.2.0.0. OCMOD система работает только с OpenCart 2.x.x.x и выше – еще одна причина установить последнюю версию.

Нам пора двигаться дальше, вперед!

Что такое OCMOD?

OCMOD – система поиска и замены на основе XML, с помощью которой можно менять файлы ядра OpenCart. Необходимо создать XML файл по правилам именования OCMOD, все остальное сделают за вас. Если слышали о vQmod в OpenCart 1.5.x, то новая система преемница старой.

Пара примеров, чтобы понять возможности:

Вставка определенного кода перед любой строкой в файле.

Замена куска кода на свой.

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

Изменение схемы базы данных OpenCart.

Много другое…

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

Если вы не слышали ни про vQmod ни про OCMOD, советую прочитать вышеупомянутую статью, так как в этом уроке мы сразу перейдем к использованию OCMOD.

Познакомились с OCMOD – можно идти дальше и создать модуль OCMOD.

Как это сделать без OCMOD?

Быстро пробежимся по файлам, которые необходимо изменить. Откройте файл catalog/controller/checkout/payment_method.php в текстовом редакторе и найдите следующий код в методе index.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

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

Наш кастомный код находится в комментариях.

Сначала мы получаем общий вес корзины через метод getWeight объекта Cart. Для упрощения мы захардкодили минимально необходимый вес для COD метода – 100. Вы можете сделать back end модуль настройки, чтобы настраивать это значение через админку.

Далее идет условие if, проверяющее общий вес корзины на минимально необходимый для COD. В этом условии фильтруется метод COD в массиве $results.

С изменением кода закончили. В следующем разделе мы повторим фильтрацию, но через OCMOD – это я обещал вам в начале статьи!

Создание и установка модуля OCMOD

Создание модуля

Создайте файл filter_payment_method.ocmod.xml со следующим кодом.

Большая часть тегов говорит сама за себя. Для нас самый важный тег file – тег задает имя файла, над которым будет выполнена операция. С помощью тега search производится поиск кода, а тег add вставляет наш код.

Установка модуля

Перейдите на back end и далее Extensions > Extension Installer. Кликните на upload и выберите файл, созданный в предыдущем разделе. Если все будет хорошо, отобразится сообщение об успехе.

Перейдите в Extensions > Modifications – на этой странице должно отобразиться расширение OCMOD.

Вы успешно установили расширение!

Перейдите на front end и добавьте пару товаров в корзину, чтобы общая сумма была менее 100. Перейдите к оформлению заказа. На вкладке Payment methods отсутствует метод COD. У вас должен быть активен хотя бы один метод оплаты, в противном случае OpenCart скажет вам No Payment options are available.

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

Заключение

В этой статье мы узнали, как с помощью системы OCMOD фильтровать методы оплаты в корзине по весу. Надеюсь, вам понравилось, и вы узнали что-то новое в OpenCart.

Автор: Sajal Soni

Источник: //code.tutsplus.com/

Редакция: Команда webformyself.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Хотите узнать, что необходимо для создания сайта?

Посмотрите видео и узнайте пошаговый план по созданию сайта с нуля!

Смотреть видео

Метки:

Похожие статьи:

Комментарии Вконтакте: