OCMarket

Система модификаций OCMOD

1 сообщение в этой теме

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

Если OCMOD разработан правильно, то магазин работает без изменения основных файлов!

Это означает, что оригинальные файлы движка OpenCart не изменяются.

Установка и структура

Установка файлов производится через панель управления в разделе Модули - Установка расширений.
Для установки расширения, достаточно загрузить файл .ocmod.zip или .ocmod.xml
Напримерname_modificator.ocmod.zip или name_modificator.ocmod.xml

  1. Загрузка модификатора через Меню - Модули - Установка расширений . Данный метод установки записывает код модификатора в базу данных, так же модификаторы видны в списке модификаторов. А если в архиве есть файлы sql и php то данные файлы выполнятся.
  2. Возможно просто скопировать файл модификатора ocmod.xml в папку system . Данный метод не записывает код в базу, а использует его напрямую. Удобен тем, что можно код редактировать дальше не делая повторных загрузок.
Скрытый текст

 

Пример структуры OCMOD сжатого файла

- upload
- install.sql
- install.php
- install.xml

upload
Директория в которой расположены файлы (например библиотека или модуль).

install.sql
Файл sql запроса для выполнения запроса к базе данных ;

install.php
Содержит PHP код который необходимо выполнить при установке расширения .

install.xml
XML файл модификатор.

 

Документация по XML модификатору

Модификатор создает виртуальную копию файла над которым производит изменения. Используйте эту систему вместо изменения файлов по умолчанию . Различные модификации может быть применены для одного и того же файла

 

Пример OCMOD файла:

<?xml version="1.0" encoding="utf-8"?>
  <modification>
  <name>Modification Default</name>
  <code>modification_id</code>
  <version>1.0</version>
  <author>OpenCart Ltd</author>
  <link>http://www.opencart.com</link>

  <file path="catalog/controller/common/home.php">
    <operation>
      <search><![CDATA[
         $data['column_left'] = $this->load->controller('common/column_left');
      ]]></search>
      <add position="replace"><![CDATA[
         Моя строка
      ]]></add>
    </operation>
  </file>

</modification>

Описание тегов

File Файл или файлы для изменений

 

Система модификатора использует PHP функцию glob для поиска файлов
http://hk1.php.net/manual/ru/function.glob.php

 

Пример:
Путь к файлу.

<file path="catalog/controller/common/home.php">

Если необходимо произвести изменения в нескольких файлах или в файлах "по маске", используйте следующий пример:

<file path="system/engine/action.php|system/library/*.php">

или 

<file path="system/{engine,library}/{action,loader,config,language}*.php">
Скрытый текст

 

В версии ниже 2.1 в качестве разделителя использовалась запятая.


<file path="system/engine/action.php,system/library/*.php">

Обратите внимание, что ниже указанный способ не работает в версиях 2.0.2.0 - 2.0.3.1


<file path="system/{engine,library}/{action,loader,config,language}*.php">

 

 

Operation - Действия над файлом / файлами

  • error="(skip|abort)" - пропустить при ошибке | прервать работу модификатора

Search - Поиск кода

  • trim="(true|false)" - удалить пробелы
  • regex="(true|false)" - использовать регулярное выражение
  • index="(число)" - выбор определенной найденной позиции по числу

Пример:

<?xml version="1.0" encoding="utf-8"?>
<modification>
  <name>Modification Default</name>
  <code>modification_id</code>
  <version>1.0</version>
  <author>OpenCart Ltd</author>
  <link>http://www.opencart.com</link>

      <file path="catalog/controller/common/home.php">
          <operation>
              <search trim="true|false"><![CDATA[
                  $data['column_left'] = $this->load->controller('common/column_left');
              ]]></search>
              <add position="replace" offset="1"><![CDATA[
                  ТЕКСТ
              ]]></add>
          </operation>
      </file>

</modification>

Add - Добавить или заменить.

  • position="(Replace|Before|After)" - Заменить | Вставить до | Вставить после
  • trim="(true|false)" - удалить пробелы
  • offset="(число)" - перейти на указанное кол-во строк (можно использовать отрицательное значение)

атрибут position не может быть использован если применяется поиск с регулярным выражением

Пример:

<?xml version="1.0" encoding="utf-8"?>
<modification>
  <name>Modification Default</name>
  <code>modification_id</code>
  <version>1.0</version>
  <author>OpenCart Ltd</author>
  <link>http://www.opencart.com</link>

  <file path="catalog/controller/common/home.php">
      <operation>
          <search trim="true|false" limit="2"><![CDATA[
              $data['column_left'] = $this->load->controller('common/column_left');
          ]]></search>
          <add position="Replace|Before|After" offset="2"><![CDATA[
              ТЕКСТ
          ]]></add>
      </operation>
  </file>

</modification>

Regex - регулярное выражение

  • limit="(число)" - ограничение кол-во найденных совпадений
<?xml version="1.0" encoding="utf-8"?>
<modification>
  <name>Regex Example</name>
  <code>modification_id</code>
  <version>1.0</version>
  <author>OpenCart Ltd</author>
  <link>http://www.opencart.com</link>

  <file path="system/{engine,library}/{action,loader,config,language}*.php">
      <operation>
          <search regex="true" limit="3"><![CDATA[
              ~(require|include)(_once)?\(([^)]+)~
          ]]></search>
          <add><![CDATA[
              $1$2(modification($3)
          ]]></add>
      </operation>
  </file>

</modification>

Когда вы используете regex вы не можете использовать атрибут position, trim or offset .

Атрибут limit доступен для использования.

 

В примере ниже можно увидеть как в третьей найденной позиции меняется 'foo' на 'bar':

lorem ifoopsum foo lor foor ipsum foo dolor foo
^1 ^2 ^3 ^4 ^5

Выражение:

s/\(.\{-}\zsfoo\)\{3}/bar/

Результат:

lorem ifoopsum foo lor barr ipsum foo dolor foo
^1 ^2 ^3=bar ^4 ^5

Больше информации по регулярным выражением в PHP вы можете узнать по ссылке ниже:
http://hk2.php.net/manual/ru/function.preg-replace.php
Информацию по регулярным выражением можно получить по ссылке ниже:
http://www.regular-expressions.info

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу