admin Опубликовано 19 марта, 2022 Поделиться Опубликовано 19 марта, 2022 С версии opencart 2 в поставке CMS уже встроена система модификации файлов OCMOD. Она пришла на замену VQMOD и имеет некоторые отличия как в принципах формирования файлов xml так и в установке файлов модификаций. Очень большим плюсов OCMOD является тот, что он уже встроен в opencart и не нуждается в дополнительной установке. Структура папок модуля для OCMOD Весь модуль должен быть упакаван в zip архів и иметь название xxx.ocmod.zip где ххх – любое слово латиницей. Внутренняя структура архива: папка upload - обязательная папка в которой находяться файлі модуля с подпапками папка admin - папка с файлами модуля папка catalog - папка с файлами модуля и так далее - другие папки файл instal.xml - файл с изменениями которые нужно внести в файлы ядра opencart файл instal.php - php файл с функциями которые надо выполнить во время установки модуля файл instal.sql - sql файл с командами insert, update или delete которые надо выполнить во время установки модуля Подробнее о структуре файла instal.xml Данный файл отвечает за внесение изменений в любые файлы ядра движка, при этом сами файлы не изменяются, а делается их копия с внесенными изменениями. Данные копии используются при загрузке сайта вместо стандартных. Просмотреть все созданные файлы можно в папке system/storage/modification в данной папке повторяется полная структура папок ядра где размещается модифицированый файл. Поговорим о самой структуре файла. Пример файла: <?xml version=”1.0″ encoding=”utf-8″?> <modification> <name>Modification Default</name> <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[ test123 ]]></add> </operation> </file> </modification> Атрибуты: “name” - название модификатора должно быть уникалное в разрезе всех установленных модификаторов. Обязательно к заполнению. “version” - версия вашего модификатора/модуля. Не обязательно но желательно к заполнению. “author” - автор модуля/модификатора.Не обязательно но желательно к заполнению. “link” - линк на любой сайт. Можете указать свой сайт ии оставить пустым. Теги: “file“ - в данном теге прописывается путь и название файла в который мы будем вносить изменения. <file path=”catalog/controller/common/home.php”> изменения будут вноситься в файл home.php который находится в папке catalog/controller/common <file path=”catalog/controller/{common,product}/home.php”> поиск файла home.php будет происходить уже в двух папках в catalog/controller/common и catalog/controller/product. То есть можно укозать несколько папок для поиска файла. Для єтого нужно просто указать все папки между двух "{}" через запятую. Если указать путь к файлу так: <file path=”catalog/controller/*/home.php”> То поиск файла home.php будет происходить во всех подпапках папки controller. Так же есть возможность задать несколько файлов в которые мы хотим внести изменения. Для нескольких файлов : <file path=”catalog/controller/common/{home,header}*.php”> Для всех файлов с разширением .php директории “common": <file path=”catalog/controller/common/*.php”> “operation“ - тег в котором заключено описание что именно искать и что делать с найденным элементом. Для каждлго задания данный тег открывается и закрывается отдельно. В теге может быть указан атрибут: error = "skip" - (работает только начина с версии opencart - 2.3) позволят пропускать задачу при возникновении ошибки, без прерывания выполнения всех задач. <operation error = “skip”> … </operation> “search” – в данном теге указываем элемент поиска. То, что нужно найти в файле/файлах указаных в теге “file” В теги serch можно указывать несколько атрибутов: trim="(true|false)" - удалять пробелы в указаном искомом тексте regex="(true|false)" - используется только когда поиск текста происходит через регулярное выражение index="(number)" - указывает к какому по очереди искомому тексту применять изменения описанные в теге "add"(о нем ниже). Тоесть если указаный код выглядит так: <search index=”2″><![CDATA[$data[‘column_left’]]]></search> то, если в указаном файле, код – “$data[‘column_left’]” встречается несколько раз, то изменения будут применены только ко второму по счету совпавшему тексту. "add" - в данном теге указывается текст который надо вставить в искомый файл. Место куда именно внужно вставить указывается атрибутами: trim="(true|false)" - перед вставкой уода будут удалены все ненужные пробелы. (не обязателен) position="(Replace|Before|After)" - обязателен атрибут. replace - заменить найденый текст (который указаный в теге "search") на текст который указан в теге "add" before - вставить текст с теге "add" над котом указаный в теге "search" after - вставить текст с теге "add" под котом указаный в теге "search" offset="(число)" - атрибут указывает сколько строчек отступить от кода указаного в теге "search" и только потом вставить новый код. Если тег "add" будет иметь атрибут position="before" и offset="5" <add position=”before” trim=”true” offset=”5″> . То будет найдена искомая строка, потом от нее будет отсчитано 5 строк вверх и после пятой строки встится новый код. Обратите внимание если указать <add position=”replace ” trim=”true” offset=”5″> то система найдет искомый код отступить от него в низ 5 строчек и заменить сам искомый текст и эти 5 строк на новый код. Все тексты которые мы ищим и те которые хотим вставить должны заключаться в специальные теги в начале “<![CDATA[” и закрываться в конце “]]>". Пример: <search><![CDATA[ искомый текст ]]></search> <add position="replace"><![CDATA[ добавляемый текст ]]></add> И так, давайте теперь разберем код который я наводил в начале статьи: <?xml version=”1.0″ encoding=”utf-8″?> <modification> <name>Modification Default</name> <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[ test123 ]]></add> </operation> </file> </modification> Что он делает? Ответ: ищем файл catalog/controller/common/home.php в данном файле ищем строку $data['column_left'] = $this->load->controller('common/column_left'); найденную строку замеяем на ” test123″ Надеюсь я хоть чуточку улучшил вам понимание в даном моде и в том как с ним работать. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.