Приветствую вас следующем уроке мини-курса по созданию собственного несложного компонента для системы управления контентом Джумла. На прошлом видео-уроке мы с вами установили заготовку будущего компонента MVC, и сейчас начинаем описывать функционал компонента новостей. И начинаем с точки входа в данный компонент.
Переходим в исходных файлах CMS Joomla на сервере (сейчас работаем уже с установленным компонентом). Переходим в каталог administrator
(разработку начинаем с панели администратора компонента). Далее каталог component
– это каталог, в котором установлены все компоненты панели администратора. И соответственно папка com_news
. Это компонент, с которым мы работаем.
Открываем файл news.php
- это точка входа в компонент новостей. Открываем тут <?php
, и первым делом мы должны проверить, определена ли системная константа с именем _JEXEC
, используя функцию defined
:
defined('_JEXEC') or exit();
Данная константа нужна для предотвращения прямого доступа к файлам CMS Джумла, и данная проверка должна быть прописана в каждом PHP файле CMS Joomla. Константа _JEXEC
определяется в точке входа в панель администратора, т.е. в файле index.php
каталога administrator
. Давайте откроем данный файл в текстовом редакторе, и на двадцать третьей строке вы увидите определение данной константы. То есть, если мы попытаемся обратиться к файлу news.php
напрямую, если в браузере пропишем путь к данному файлу, то сразу же отработает данная строка: данная константа в данном файле не определяется, и сразу же будет выполнен выход из приложения. Если же мы обращаемся к компоненту, то в любом случае обращение к компоненту выполняется из главной точки входа из файла index.php
, в котором данная константа определяется, а значит функция exit()
не выполняется.
Дальше создаем временную переменную $controller
, в которую мы запишем объект контроллера компонента новостей. Того контроллера, который и выполнит поставленную задачу. Для получения данного объекта мы обращаемся к родительскому классу JControllerLegacy
- это родительский контроллер для всех контроллеров CMS Joomla. И вызываем у класса данного контроллера метод getInstance()
. Данный метод реализует шаблон проектирования синглтон и возвращают в качестве результата объект класса, часть имени которого мы передаем данному методу. В качестве параметра я передаю часть имени строку News
. То есть в этом случае метод getInstance()
вернет объект класса news
контроллер NewsController
. Данный класс должен быть описан в файле controller.php
.
То есть News
- это имя контроллера, а соответственно добавочная приставка Controller
, - это как бы общая часть, которая указывает принадлежность этого класса к классам контроллеров. Соответственно, если сейчас мы сохраним изменения и попытаемся используя функцию print_f()
распечатать содержимое переменной $controller
, то в браузере в компоненте новостей мы видим ошибку: «Неверный класс контроллера
».
Потому, как метод getInstance()
пытается найти данный класс в файле controller.php
, а значит в данном файле мы должны описать указанный class
. То есть сейчас мы из точки входа уже попадаем в контроллер. Мы получаем объект данного контроллера и создаем класс под названием NewsController
. Если это контроллер, он должен наследовать функционал родительского класса JControllerLegacy
. Таким образом мы создали объект главного контроллера компонента com_news
.
И сейчас в панели администратора, если мы обновим информацию, то мы видим что ошибки нет, так как в переменную контроллер попал объект класса NewsController
. Соответственно получив объект контроллера мы должны выполнить поставленную пользователем задачу, А значит обращаемся к переменной $controller
и вызываем на исполнение метод execute()
…
Для того, чтобы полностью разобраться с тем, как создать компонент для CMS Joomla, а точнее, как реализовать точку входа, далее определить контроллер, который будет выполнять поставленные задачи, а также, как создать главную страницу расширения – «Менеджер новостей», в котором в будущем будут отображаться добавленный новости и о том, как создать панель управления в создаваемом компоненте, смотрите видео-урок канала WebForMySelf на YouTube:
Продолжение → «Урок 4. Страница добавления нового элемента»
Ссылка на оглавление со списком всех уроков мини-курса WebForMySelf «Создание компонента для Joomla 3 за два вечера»
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)