Эта статья, прежде всего, будет интересна профессионалам Joomla, тем, кто знает, что такое Joomla Overrides, знаком с парадигмой MVC и владеет PHP. В этой статье я расскажу о том, как можно переопределить в шаблон не только макеты фронтенда Joomla, но и модели, контроллеры, представления компонентов без хаков ядра. Да, именно так, вы не ослышались.
Содержание
Идея очень близка к стандартным переопределениям макетов Joomla. Делаем плагин, который перед загрузкой компонента проверяет в шаблоне соответствующую папку в поисках переопределений не только макетов, но и других файлов MVC. Если таковые находятся, то используем их вместо стандартных, которые есть в компоненте.
Вот плагины:
Плагин переопределений MVC для Joomla 2.5
Плагин переопределений MVC для Joomla 3.2
После установки плагин нужно активировать в менеджере плагинов.
Как это работает?
В папке с шаблоном создаем подпапку code, в ней подпапку с именем компонента и далее, как описано ниже.
Переопределение контроллера компонента:
TEMPLATE_NAME/code/COMPONENT_NAME/CONTROLLER.php
TEMPLATE_NAME/code/administrator/COMPONENT_NAME/CONTROLLER.php
Переопределение модели компонента:
TEMPLATE_NAME/code/COMPONENT_NAME/models/MODEL_NAME.php
TEMPLATE_NAME/code/administrator/COMPONENT_NAME/models/MODEL_NAME.php
Переопределение представления компонента:
TEMPLATE_NAME/code/COMPONENT_NAME/views/VIEW_NAME/VIEW_NAME(.FORMAT).php
TEMPLATE_NAME/code/administrator/COMPONENT_NAME/views/VIEW_NAME/VIEW_NAME(.FORMAT).php
Переопределение модуля:
TEMPLATE_NAME/code/MOD_NAME/MOD_NAME.php
Расширение стандартных классов
Если в настройках плагина вы активируете опцию Make Extendable, то будете иметь возможность расширять классы. Это лучший подход, чем просто переопределение.
Пример расширения класса можно посмотреть в статье VirtueMart – интернет-магазин на Joomla. Часть 29. Расширение функциональных возможностей Virtuemart без хака ядра.
Более подробную документацию по работе этого плагина можно посмотреть в этом руководстве(англ.).
И все это будет работать! Но не стоит злоупотреблять переопределением MVC-файлов. Может случиться так, что с очередным обновлением разработчики внесут какие-то изменения не только в переопределенные файлы, но и в другие, которые связаны с переопределенными. Это может привести к ошибкам.
Давно работаю с Joomla и периодически приходится хакать сторонние компоненты, чтобы доработать их под нужды заказчика. Теперь эта работа станет значительно проще.
Спасибо, Виталий, твой сайт один из лучших по Joomla!
В любом случае отличный материал. +
Notice: Undefined variable: path in /home/sitename/public_html/plugins/system/mvcoverride/module/helper.php on line 65
Notice: Undefined variable: path in /home/sitename/public_html/plugins/system/mvcoverride/module/helper.php on line 67
не подскажите, как исправить?
Все сделано по статье..
Просто берете папку с view из компонента и копируете ее. Далее переименовываете на свое название папку и данные в файлах, которые в ней находятся (классы, названия в файле xml). Далее, копируете файл контроллера и также переименовываете его и класс в нем. Вот и всё - у вас готов ваш личный view, в котором вы можете творить всё, что душе угодно, не опасаясь хаков. В админке появится выбор пункта меню соответствующего типа. Плюс к вашему собственному view вы можете создать свою модель. Это тоже будет работать. Joomla прекрасно расширяется, в этом ее прелесть.
Наверное неправильный вопрос, но все же:
"Плагин переопределений MVC для Joomla 4.1" Вы еще не создавали..?