Статьи

Новая система модификации в OpenCart 2

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

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

Система OCMOD — это система поиска и замены на основе XML. Вы определяете файл XML в соответствии с соглашениями OCMOD, и он сделает все остальное. Таким образом, мы можем сказать, что вы можете изменить любой файл в рамках ядра!

Давайте перечислим пару примеров, чтобы понять, на что он способен:

  • Вставьте определенный кусок кода перед любой конкретной строкой в ​​файле.
  • Замените блок кода вашим собственным блоком кода.
  • Найдите строку в файле с помощью регулярных выражений и замените ее другой строкой.
  • Измените схему базы данных OpenCart.
  • Многое другое…

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

В следующем разделе мы продолжим и создадим простой модуль OCMOD для демонстрационных целей. Я предполагаю, что вы используете последнюю версию OpenCart.

Вы можете создать и установить расширение OCMOD двумя различными способами. Либо вам нужно создать zip-файл с расширением .ocmod.zip, либо другой способ — создать только один XML-файл с расширением .ocmod.xml.

Опция zip-файла позволяет вам также включить пару других файлов, чтобы вы также могли выполнять другие операции, такие как изменение схемы базы данных, загрузка новых файлов / каталогов в установку OpenCart и т. Д. Давайте посмотрим, какие опции доступны при использовании zip-версии расширения OCMOD.

  • Upload: содержимое этого каталога будет скопировано так же, как и в корневой каталог OpenCart.
  • install.sql: в этом файле вы можете включить SQL-запросы для изменения базы данных.
  • install.php: В этом файле вы можете включить пользовательский код PHP, который требуется для кода модификации.
  • install.xml: это самый важный файл, который содержит код модификации XML.

Конечно, не обязательно создавать все перечисленные выше файлы / каталоги, но вы должны создать файл install.xml чтобы убедиться, что ваше расширение OCMOD может быть установлено.

Это гораздо более простой способ создания расширения OCMOD — вам просто нужно создать файл XML с расширением .ocmod.xml. Можно сказать, что он идентичен файлу install.xml и содержит код модификации XML, который мы обсуждали в предыдущем разделе.

Для простоты мы пойдем с опцией позже и создадим расширение 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 со следующим содержимым.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?xml version=»1.0″ encoding=»utf-8″?>
<modification>
    <name>Product Title Modification</name>
    <code>Code_Tutsplus_Product_Title</code>
    <version>1.0</version>
    <author>Code Tutsplus</author>
    <link>http://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>

Как видите, большинство тегов говорят сами за себя. Самый важный тег — это <file> , который определяет имя файла, над которым будет выполняться операция. Тег <search> используется для поиска кода, который мы ищем, и, наконец, мы использовали <add> для внедрения нашего кода.

Теперь, когда мы закончили с нашим файлом модификации, давайте посмотрим, как установить его из серверной части OpenCart. Перейдите на сервер и перейдите к Расширения> Установщик расширений . Нажмите на кнопку загрузки и выберите файл, который мы создали в предыдущем разделе. Если все идет хорошо, вы должны увидеть сообщение об успехе.

Перейдите к Расширениям> Модификации , и вы должны увидеть свое расширение OCMOD в списке на этой странице.

Страница со списком изменений

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

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

Перейдите во внешний интерфейс и перейдите на любую страницу сведений о продукте. Вы должны увидеть, что название продукта теперь пишется с большой буквы.

Front-End Demo

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

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