Opencart где лежат ocmod файлы
OCMOD – это система, которая позволяет владельцам магазинов изменять (модифицировать) функционал магазина или добавить дополнительный функционал, загружая сжатый файл ocmod.zip, содержащий файлы XML, SQL и PHP. Если OCMOD разработан правильно, он может изменить работу OpenCart 3 без изменения каких-либо основных файлов. Это означает, что при удалении модификации ни один из исходных файлов OpenCart не нуждается в восстановлении или исправлении. OCMOD основан на системе Vqmod Qphoria..
Режим для разработчиков
В OpenCart 2.0.1.1. для упрощения этого немного неудобного подхода добавлен режим для разработчиков. В этом режиме не нужно каждый раз загружать файл OCMOD, достаточно его записать в папку /system и назвать *.ocmod.xml и система после обновления кеша внесет изменения из этого файла в кеш. Правда, такой файл не появится на странице Модификаций.
Тег - Operation
Указывает начало секции производимой модификации. Внутри file секций может быть несколько. Т.е мы можем делать сразу несколько изменений в одном файле. Тег operation может иметь необязательный атрибут error, который может принимать значения:
- skip - в случае ошибки пропустить текущую секцию и перейти к следующей
- log (по умолчанию) - в случае ошибки пропустить всю секцию и перейти к следующему
- abort - в случае ошибки прервать все модификации в xml файле
Например, найти в файле category.twig код " " и если его нет, тогда пропустить и перейти к следующей операции и найти " ".
Если не указать атрибут error="skip", тогда на первом поиске текста " " вся секция будет прервана и проигнорирована.
Критика такого подхода
- все модификации хранятся в базе что делает процесс исправления конфликтов очень сложным, а они скорее всего будут. Потому что в отличии от vQmod, где модификации хранятся в файлах и их легко изменить, базу данных изменить сложнее и нежелательно, остается каждый раз изменять и заново загружать эту модификацию. А для исправления конфликта иногда этот процесс придется повторить несколько раз. Для обычного пользователя это значительно добавит головной боли.
- весь процесс местами непонятен. Разобраться обычному пользователю будет сложно - что куда загружать, после чего чистить кеш итд.
- процесс установки усложняется, так как вместо одного действия (переписать файл в нужную папку вместе с другими файлами модуля) получается несколько действий: сначала переписать файлы модуля, потом зайти в админку, выбрать нужный файл, загрузить его, обновить кеш
- если пользователь загрузить файл, а потом его удалит или потеряет то достать этот файл из базы и восстановить будет сложно.
Установка модификаций
В OpenCart 2.0, модификации OCMOD устанавливается через админку, меню Установка расширений. На этой странице есть возможность загрузить как отдельный xml файл OCMOD так и архив с несколькими файлами: OCMOD , установка таблиц в базе данных, php код установки.
- после загрузки модуля он не будет работать автоматически, для того, чтобы он заработал нужно нажать кнопку Обновить. Эта кнопка изменяет кеш модификаций, создает новые измененные файлы движка, которые будут загружаться системой вместо оригинальных.
- кнопка Очистить удаляет весь кеш модификаций, все файлы
- кнопка Удалить удаляет данную модификацию из базы (но не чистит кеш и эта модификация продолжает работать. )
Файловая структура
- кеш модификаций хранится в папке /system/modification. Файлы кеша точно наследуют структуру OpenCart, что упрощает работу с ними, в отличии от vQmod где кеш называется как-то так: vq2-admin_model_catalog_category.php и если много файлов то найти нужный затруднительно
- в папке /system также находится файл modification.xml это главный файл, который подключает модификации к движку, почему бы код подключения не внести в сам код движка, если OCMOD уже в движке?
- в этой же паке /system можно добавлять свои *.ocmod.xml файлы в режиме разработки
- в /system/logs/ocmod.log находится лог OCMOD , он же отображается в админке на странице с модификациями. Лог очень неудобный, понять в нем что-то, особенно обычному пользователю очень сложно.
Установка отдельного модификатора ocmod.xml
Бывают случаи, когда у вас есть или вы создали свой модификатор в виде "имя-модуля".ocmod.xml и его необходимо установить. Есть три способа как это сделать.
1. Рекомендованный способ. Этот способ установки записывает код ocmod файла в базу данных, так же вы получаете возможность редактировать модификатор в разделе "Модификаторы" не делая повторных загрузок, возможность просматривать лог ошибок модификаторов, возможность создавать свои модификаторы.
2. Загрузка модификатора через установщик расширений в панели администратора. Данный способ установки записывает код ocmod файла в базу данных, так же модификаторы видны в списке в разделе "Модификаторы".
Для того чтобы установить файл ocmod.xml данным способом, вам необходимо
Создать .zip архив, например .zip и переименовать его в .ocmod.zip
Поместить внутри архива пустую папку "upload" а так же ваш файл модификатора, переименовав его предварительно в install.xml
Загрузить созданный архив .ocmod.zip через установщик расширений в админ панели.
3. Загрузка файла модификатора на сервер в папку "system" . Данный способ не записывает код ocmod файла в базу данных, а использует его напрямую. Модификаторы НЕ видны в списке в разделе "Модификаторы".
Важно! Не забывайте после каждой установки или изменения модификатора, что бы эти изменения применились на сайте, очищайте кэш модификаторов, кэш Темы и кэш SASS. Для быстрой очистки кэшей сайта рекомендуем использовать этот бесплатный модуль быстрой очистки кэша и логов для Opencart 3.
Sorry for my English! English is not my native language. One of the reasons to create this blog is to improve my English writing. So I will be highly obliged if you will help me with this. If you find a grammar error on this page, please select it with your mouse and press Ctrl+Enter .
В предыдущих статьях я уже писал об отличиях между OpenCart 1.5.6 и OpenCart 2.0, а также о том как перенести модуль с Opencart 1.5.6 на OpenCart 2.0. В этой статье речь пойдет об отличиях между vQmod и OCMOD.
Документация по XML модификатору.
Модификатор создает виртуальную копию файла над которым производит изменения. Используйте эту систему вместо изменения файлов по умолчанию . Различные модификации могут быть применены для одного и того же файла
Пример OCMOD файла:
Установка модификаций
В OpenCart 2.0, модификации OCMOD устанавливается через админку, меню Установка расширений. На этой странице есть возможность загрузить как отдельный xml файл OCMOD так и архив с несколькими файлами: OCMOD , установка таблиц в базе данных, php код установки.
- после загрузки модуля он не будет работать автоматически, для того, чтобы он заработал нужно нажать кнопку Обновить. Эта кнопка изменяет кеш модификаций, создает новые измененные файлы движка, которые будут загружаться системой вместо оригинальных.
- кнопка Очистить удаляет весь кеш модификаций, все файлы
- кнопка Удалить удаляет данную модификацию из базы (но не чистит кеш и эта модификация продолжает работать. )
Тег - Add
Тег add содержит текст, который будет заменён или добавлен до или после искомого текста.
Так же, как и тег search, тег add должен содержать , между которыми вставляется текст кода, который будет добавлен или на который будет заменён искомый текст.
Тег add имеет свои атрибуты:
- position - может принимать значения:
- replace (по умолчанию) - замена найденного текста
- before - добавить текст перед найденным текстом
- after - добавить текст после найденного текста
Пример: Добавим ссылку "Link" в футер на фронтальной части.
Модификатор OCMOD позволяет в OpenCart расширить возможности, не затрагивая оригинальные файлы, а для возврата в исходное состояние вам просто будет достаточно удалить его.
В Opencart 3 предусмотрено 2 способа установки модулей и модификаторов.
Первый способ - загрузка через встроенный в панели администратора установщик расширений.
Второй способ - загрузка файлов модуля непосредственно на сервер.В большинстве случаев порядок установки стандартный. Но если для какого то расширения есть свои особенности установки, то обычно разработчики прилагают к данному модулю подробную инструкцию по установке.
Важно! Перед установкой любого модуля или расширения всегда делайте резервную копию сайта и базы данных. Если при установке вдруг что-то пойдет не так, вы всегда сможете восстановить первоначальное состояние магазина из резервной копии.
Рассмотрим оба способа установки модулей:
Описание тегов XML файла
File – файл или файлы для изменений
Пример:
Путь к файлу.Если необходимо произвести изменения в нескольких файлах или в файлах "по маске", используйте следующий пример:
Operation – действия над файлом / файлами
- error="(skip|abort)" - пропустить при ошибке | прервать работу модификатора
Search – поиск кода
- trim="(true|false)" - удалить пробелы
- regex="(true|false)" - использовать регулярное выражение
- index="(число)" - выбор определенной найденной позиции по числу
Add – добавить или заменить.
- position="(Replace|Before|After)" - Заменить | Вставить до | Вставить после
- trim="(true|false)" - удалить пробелы
- offset="(число)" - перейти на указанное кол-во строк (можно использовать отрицательное значение)
(внимание, атрибут position не может быть использован если применяется поиск с регулярным выражением).
Regex - регулярное выражение
- limit="(число)" - ограничение кол-во найденных совпадений
Когда вы используете regex вы не можете использовать атрибут position, trim or offset . Атрибут limit доступен для использования.
В примере ниже можно увидеть как в третьей найденой позиции меняется 'foo' на 'bar':lorem ifoopsum foo lor foor ipsum foo dolor foo
^1 ^2 ^3 ^4 ^5Результат:
lorem ifoopsum foo lor barr ipsum foo dolor foo
^1 ^2 ^3=bar ^4 ^5OCMOD - Модификаторы в OpenCart - это разновидность расширений, позволяющих вносить изменения в функционал или внешний вид, не затрагивая оригинальные файлы. Тем самым обеспечивается неизменность оригинальных файлов самого OpenCart, при том, что появляется возможность заменять или расширять необходимый функционал.
История появления модификаторов началась с vQmod в opencart версии 1.5х, и уже в версии opencart 2x он был усовершенствоваван и преобразован в OCMOD. В отличии от vQmod который устанавливался отдельно, OCMOD внедрён по умолчанию как стандартный функционал в CMS OpenCart2х и выше.
OCMOD - Модификатор в OpenCart - расширение представляющее из себя XML файл, которое содержит набор инструкций о том, в каких оригинальных файлах OpenCart-а, в каких местах, какой код нужно заменить, добавить или удалить. OpenCart при выполнении инструкций xml файла создает копии исходных файлов в специальную директорию кэша модификаторов с внесёнными изменениями в этих копиях. В результате, при работе сайта используются измененные файлы, а не их оригинальные файлы.
Модификатор OCMOD может быть как самостоятельным модулем, изменяющим или расширяющим стандартный функционал, так и входить в состав полноценного модуля с дополнительными php, tpl или twig и прочими файлами.
Режим для разработчиков
В OpenCart 2.0.1.1. для упрощения этого немного неудобного подхода добавлен режим для разработчиков. В этом режиме не нужно каждый раз загружать файл OCMOD, достаточно его записать в папку /system и назвать *.ocmod.xml и система после обновления кеша внесет изменения из этого файла в кеш. Правда, такой файл не появится на странице Модификаций.
Плюсы такого подхода
- безусловно плюсом является то, что пользователь видит из админки все модификации и может из админки их временно отключить или удалить.
Файловая структура
- кеш модификаций хранится в папке /system/modification. Файлы кеша точно наследуют структуру OpenCart, что упрощает работу с ними, в отличии от vQmod где кеш называется как-то так: vq2-admin_model_catalog_category.php и если много файлов то найти нужный затруднительно
- в папке /system также находится файл modification.xml это главный файл, который подключает модификации к движку, почему бы код подключения не внести в сам код движка, если OCMOD уже в движке?
- в этой же паке /system можно добавлять свои *.ocmod.xml файлы в режиме разработки
- в /system/logs/ocmod.log находится лог OCMOD , он же отображается в админке на странице с модификациями. Лог очень неудобный, понять в нем что-то, особенно обычному пользователю очень сложно.
Особенности установки расширений через стандартный установщик Опенкарт 3 в панели администратора.
По умолчанию в Опенкарт 3 загружать файлы через установщик расширений разрешено только в следующие директории:
Либо воспользуйтесь вторым способом установки дополнений
Установка модулей через установщик расширений в Opencart 3 (рекомендованный способ).
- Открываем в боковом Меню админ-панели вкладку >>> Модули/Расширения и переходим в раздел >>> Установка расширений.
- Жмем кнопку "Загрузить" и загружаем архив модуля "имя-модуля".ocmod.zip (Важно! модуль должен иметь именно такое расширение .ocmod.zip). Ждем, пока индикатор загрузки загорится зеленым цветом. Это будет означать, что файлы из архива модуля успешно загружены на сервер.
- Переходим в раздел Модули/Расширения >>> Модификаторы и обновляем кеш модификаторов. Жмем поочередно кнопки в правом верхнем углу "Очистить" >>> "Обновить".
- Переходим в раздел Меню >>> Панель состояния и жмем на кнопку в правом верхнем углу "Настройки разработчика". В открывшемся окне поочередно жмем "Очистить кэш Темы" и "Очистить кэш SASS".
- Заходим в Меню Система >>> Пользователи >>> Группы пользователей. Жмем "Редактировать" группу Администратор. На открывшейся странице жмем "Выделить все" в обоих столбцах и обязательно нажимаем кнопку "Сохранить" в правом верхнем углу.
- Переходим в раздел Модули/Расширения >>> Модули/Расширения выбираем в выпадающем списке тип расширения "Модули". На открывшейся странице находим модуль, который только что установили и жмем "Активировать" (зеленая кнопка с плюсиком). Далее жмем на кнопку рядом "Редактировать" и заходим в настройки модуля. Выставляем нужные настройки и жмем кнопку "Сохранить" в правом верхнем углу.
Отличия файлов vQmod и OCMOD
- вместо id тепреь атрибут code, он обязательный, без него модификация не установится.
- vqmver не нужен
- name
- author
- version
- link - можно свой сайт вписать, удобно
Все атрибуты не обязательны, но крайне желательны так как они отображаются на странице модификаций. Модификацию без названия система устанавливает но на странице модификаций она отображается пустой строкой, то есть это ошибка, так быть не должно, возможно в следующих версиях появится проверка.
Тег - Search
Указывает, какой текст необходимо найти в текущей операции. Содержит несколько правил использования тега:
- Тег search может быть использован только 1 раз внутри секции operation.
- Поиск можно делать только 1 строки целиком или части строки (нельзя искать несколько строк одновременно).
- Искомый текст необходимо размещать строго между .
- Пробелы и переносы строки до искомого текста и после искомого текста игнорируются, текст можно написать или сразу после CDATA или с новой строки после CDATA, если только не указан атрибут trim="false".
- Изменения применятся ко всем найденным в файле строчкам кода или их частям, если не указан атрибут index .
Специальные теги - используются в xml файлах для указания любых символьных данных, что означает, что между ними может находиться любой текст, содержащий скобки, значки больше, меньше и прочие, в том числе html и php код.
Тег search содержит следующие атрибуты, которые используются для наиболее точного определения места внесения изменения:
- index - указывает, в каком по порядку найденном тексте внести изменения. Т.е. если в файле искомый текст встречается несколько раз, тогда index позволяет указать номер найденного по порядку текста (0 всегда первый найденный текст, 1 - второй и т.д.) Можно также указать несколько номеров через запятую.
- trim - указывает игнорировать (true) или нет (false) пробелы и переносы строк до и после искомого текста.
- regex - если установлено значении true, значит искомый текст представляет собой регулярное выражение для поиска.
Пример: поиск атрибутом index среди схожих строчек кода.
В примере по index найдена первая строчка кода "$data['menus'][] = array(" и перед ней добавляем свой код.
Где что используется?
vQmod используется на OpenCart 1.5.х и является сторонней программой, которую перед использованием нужно скачать с репозитория разработчика и установить.
Установка модулей и дополнений с загрузкой непосредственно на сервер (для опытных пользователей).
Для этого распакуйте архив с модулем "имя-модуля".ocmod.zip
Внутри вы найдете папку "upload" а также файл "install.xml"
Закачайте содержимое, которое находится внутри папки "upload" на сервер в корень вашего сайта.
Переименуйте файл install.xml в >>> "имя-модуля".ocmod.xml
Закачайте переименованный файл в директорию "system" на сервере.После этого зайдите в админ панель вашего магазина и выполните пункты первого способа начиная с пункта 3
Обновление кэша модификаторов
Чтобы система увидела файлы-модификаторы и выполнила их инструкции, необходимо нажать кнопку "Обновить" в правом верхнем углу на странице Модификаторы.
Возможны ситуации, когда кэш обновлён, но изменения на сайте не вступили в силу. Обычно это связано с тем, что на сайте используются дополнительные модули кэширования, ускорители загрузки и т.п., в которых также необходимо обновить кэш.
Синтаксис модификатора OCMOD
Файл модификатора OCMOD обязательно должен содержать общую описательную часть и инструкции по изменению файлов:
Данный пример модификатора меняет файл category.php.
Он находит кусок строчки кода "$result['name']," и сразу за ним добавляет "'sku' => $result['sku'],".В одном xml файле может быть любое количество секций и возможность менять любое количество файлов одним модификатором.
Тег - File
Указывает, в каком файле или файлах нужно внести изменения. Обязательный атрибут path содержит путь до изменяемого файла. Может указывать на один файл или на несколько. Для указания нескольких файлов, расположенных в разных папках, используется символ "|". Например, внести изменения в category.php, manufacturer.php, search.php и в special.php .
Для сокращения кода можно использовать фигурные скобки, которые позволяют указать несколько значений через запятую: Например, внести изменения сразу в четыре файла category.php, manufacturer.php, search.php и в special.php. при этом суфикс .php можно вынести за фигурные скобки.
Так же можно использовать символы "*" и "?", чтобы указать путь по "маске". Бывает полезно для модификации файлов шаблонов.
Т.к. мы не знаем заранее, какие именно темы установлены в OpenCart, мы указали "*" после "theme", тогда будут модифицироваться все category.twig во всех шаблонах, находящихся в папке "theme".
Установка OCMOD файлов и иx структура.
Установка OCMOD файлов производится через панель управления в разделе Модули / Расширения — Установка расширений.
Для установки расширения, достаточно загрузить файл .ocmod.zip
Например: name_modificator.ocmod.zipВарианты загрузки OCMOD модификаторов.
- Загрузка модификатора через Меню - Модули / Расширения - Установка расширений . Данный метод установки записывает код модификатора в базу данных, так же модификаторы видны в списке модификаторов. А если в архиве есть файлы модуля, то данные файлы копируются в соответствующие директории.
- Возможно просто скопировать файл модификатора nazvanie.ocmod.xml в папку system . Данный метод не записывает код в базу, а использует его напрямую. Удобен тем, что можно код редактировать дальше не делая повторных загрузок.
Пример структуры сжатого файла ocmod.zip
upload – это директория в которой расположены файлы (например библиотека или модуль).
install.xml – это XML файл модификатор.
Обратите внимание, на тот факт, что не все директории доступны для загрузки файлов через установку расширений. Ниже список доступных директорий.
Структура архива OCMOD модификатора
Название архива модификатора - должно быть задано в соответствии с требованиямя OCMOD - "название_файла".ocmod.zip , где вместо "название_файла" вы пишите свое название без кавычек. Таким образом, название архива всегда должно заканчиваться ".ocmod.zip", иначе система проигнорирует модификатор.
Начиная с версии OpenCart 3x предполагается, что модификатор будет использоваться в составе полного модуля в виде архива - в отличии от OpenCart2x, где файл модификатора в виде "название_файла".ocmod.xml можно было загружать через установщик расщирений прямо в папку system, расположенную в корне сайта. Соответственно, при использовании файла модификатора в составе полного модуля и при его загрузке через административную часть в разделе Расширения > Установка расширений название файла-модификатора в архиве должно быть install.xml.
В OpenCart 3x файл-модификатор также можно загрузить в папку system на постоянное размещение, используя FTP клиент, при условии, что название файла модификатора будет соответствовать требованиям OCMOD в виде "название_файла".ocmod.xml .
Отличия файлов vQmod и OCMOD
- вместо id тепреь атрибут code, он обязательный, без него модификация не установится.
- vqmver не нужен
- name
- author
- version
- link - можно свой сайт вписать, удобно
Все атрибуты не обязательны, но крайне желательны так как они отображаются на странице модификаций. Модификацию без названия система устанавливает но на странице модификаций она отображается пустой строкой, то есть это ошибка, так быть не должно, возможно в следующих версиях появится проверка.
В предыдущих статьях я уже писал об отличиях между OpenCart 1.5.6 и OpenCart 2.0, а также о том как перенести модуль с Opencart 1.5.6 на OpenCart 2.0. В этой статье речь пойдет об отличиях между vQmod и OCMOD.
Где что используется?
vQmod используется на OpenCart 1.5.х и является сторонней программой, которую перед использованием нужно скачать с репозитория разработчика и установить.
Теги модификатора OCMOD и их функциональность
Критика такого подхода
- все модификации хранятся в базе что делает процесс исправления конфликтов очень сложным, а они скорее всего будут. Потому что в отличии от vQmod, где модификации хранятся в файлах и их легко изменить, базу данных изменить сложнее и нежелательно, остается каждый раз изменять и заново загружать эту модификацию. А для исправления конфликта иногда этот процесс придется повторить несколько раз. Для обычного пользователя это значительно добавит головной боли.
- весь процесс местами непонятен. Разобраться обычному пользователю будет сложно - что куда загружать, после чего чистить кеш итд.
- процесс установки усложняется, так как вместо одного действия (переписать файл в нужную папку вместе с другими файлами модуля) получается несколько действий: сначала переписать файлы модуля, потом зайти в админку, выбрать нужный файл, загрузить его, обновить кеш
- если пользователь загрузить файл, а потом его удалит или потеряет то достать этот файл из базы и восстановить будет сложно.
Плюсы такого подхода
- безусловно плюсом является то, что пользователь видит из админки все модификации и может из админки их временно отключить или удалить.
Директории
Кэш модификаторов - все изменённые модификатором файлы располагаются в папке system/storage/modification с такой же точно структурой папок, как и корень сайта, кроме папки image. Т.е. если вы сделали модификатор для файла /admin/controller/catalog/product.php то его измененная копия будет находится по пути system/storage/modification/admin/controller/catalog/product.php.
Логи модификаторов - распалагаются в папке system/storage/logs , в ней находятся 2 основных лог-файла:
- ocmod.log - ведет запись об оработке и последовательности выполнении инструкций модификаторов,
- error.log - содержит ошибки, произошедшие при преобразовании.
Читайте также: