От автора: сегодня мы поговорим про новые модификации OpenCart. Успех любого open-source фреймворка зависит от определенных факторов. Расширяемость – один из важнейших факторов. С ее помощью сообщество может добавлять новые функции и расширять функциональность ядра, что улучшает конечный продукт. Разработка кастомных расширений также должна быть.
В этой статье мы узнаем, как изменять файлы ядра OpenCart, реализуя OCMOD расширение на основе XML. Большая часть функциональности позаимствована у своего предка – системы vQmod. Новая система намного проще и в ней меньше функций по сравнению с vQmod. Новая система охватывает все важные шаблоны замены.
Система OCMOD – система поиска и замены на основе XML. По правилам OCMOD объявляется XML файл, все остальное сделают за вас. Можно сказать, что вы можете менять любые файлы ядра во фреймворке!
Чтобы понять возможности системы, перечислим несколько примеров:
Вставка определенного кода перед любой строкой в файле.
Замена блока кода на свой.
Поиск строки в файле по регулярному выражению и замена на другую строку.
Изменение схемы базы данных OpenCart.
Много другое…
Как видите, список того, что позволяет делать OCMOD, далеко не полон. Также принято использовать эту систему, чтобы напрямую не менять файлы ядра, что строго не рекомендуется.
В следующем разделе мы создадим простой модуль OCMOD для демонстрации. Предполагаю, что вы работаете в последней версии OpenCart.
Принцип работы OCMOD
Создать и установить расширение OCMOD можно двумя способами. Необходимо или создать zip файл с расширением .ocmod.zip, или создать один XML файл с расширением .ocmod.xml.
Вариант с zip файлом
Вариант с zip файлом позволяет подключить несколько файлов, чтобы можно было делать другие операции. Например, менять схему базы данных, загружать новые файлы/папки в установку OpenCart и т.д. Какие команды нам доступны с zip версией расширения OCMOD:
Upload: контент в этой папке будет скопирован, так как он относится к корню OpenCart.
Install.sql: в этом файле можно писать SQL-запросы для изменения базы данных.
Install.php: в этом файле можно писать кастомный код PHP, необходимый для модификаций.
Install.xml: самый важный файл, содержащий XML код модификаций.
Конечно, необязательно создавать все файлы/папки из списка выше, но install.xml можно создать для проверки установки расширения OCMOD.
Вариант с XML файлом
Этот способ создания OCMOD расширения намного легче. Нужно лишь создать XML файл с расширением .ocmod.xml. Можно сказать, что он идентичен файлу install.xml и хранит XML код модификаций, что мы обсудили в предыдущей секции.
Для простоты возьмем последний вариант и создадим OCMOD расширение в следующей секции.
Создание файлов модуля OCMOD
Как разработчик, вы часто будете попадать в ситуации, когда вам захочется изменить файлы ядра. Мы разберем реальный пример того, как решить эту проблему с помощью OCMOD расширения.
Предположим, что вы хотите изменить способ отображения заголовка на детальной странице товара. Код ниже устанавливает правильный заголовок детальной странице товара. Файл расположен в catalog/controller/product/product.php.
1 |
$data['heading_title'] = $product_info['name']; |
Вы хотите что-то типа:
1 |
$data['heading_title'] = strtoupper($product_info['name']); |
Давайте посмотрим, как это сделать с помощью OCMOD расширения. Создайте файл product_title.ocmod.xml со следующим кодом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?xml version="1.0" encoding="utf-8"?> <modification> <name>Product Title Modification</name> Code_Tutsplus_Product_Title <version>1.0</version> <author>Code Tutsplus</author> <link>//code.tutsplus.com</link> <file path="catalog/controller/product/product.php"> <operation> <search><![CDATA[ $data['heading_title'] = $product_info['name']; ]]></search> <add position="replace"><![CDATA[ $data['heading_title'] = strtoupper($product_info['name']); ]]></add> </operation> </file> </modification> |
Как видите, почти все теги говорят сами за себя. Самый главный тег —
Установка модуля через back end
Мы создали файл модификаций, теперь давайте установим его через back end OpenCart. Перейдите на back end и далее Extensions > Extension Installer. Кликните на upload и выберите файл, который мы создали в предыдущей секции. Если все пройдет нормально, отобразится сообщение об успешной установке.
Перейдите в Extensions > Modifications, там должно быть наше OCMOD расширение.
Это значит, что расширение успешно установлено! Тепер кликните на иконку refresh в правом верхнем углу, чтобы OpenCart обнаружил его и применил к front end.
В следующей секции мы проверим, что расширение корректно применилось к front end.
Тестирование front end
Перейдите на front end и далее на любую детальную страницу товара. Заголовок товара теперь должен отображаться в верхнем регистре.
Это был очень простой пример для демонстрации мощи OCMOD. С помощью этой утилиты можно делать гораздо большее, а также менять файлы ядра при необходимости.
Заключение
Сегодня мы обсудили новую систему модификаций в OpenCart 2. Мы прошли через весь процесс, чтобы продемонстрировать, как с ее помощью можно менять файлы ядра в OpenCart. Не стесняйтесь, пишите вопросы!
Автор: Sajal Soni
Источник: //code.tutsplus.com/
Редакция: Команда webformyself.