Приветствую вас следующем уроке мини-курса по созданию собственного несложного компонента для системы управления контентом Joomla. Мы уже реализовали функционал панели администратора компонента новостей. Сейчас приступаем к пользовательской части данного компонента, которая доступна для всеобщего посещения. Перед этим предлагаю открыть в текстовом редакторе два файла: первый - это точка входа в панель администратора index.php и второй - это главный контроллер компонента новостей controller.php. Потому как данные файлы идентичны по своему функционалу с аналогичными файлами пользовательской части.
То есть в любом случае пользовательская часть работает по такой же логической схеме, которую мы с вами уже реализовали в панели администратора. Соответственно сейчас переходим в исходники CMS Joomla, далее components, то есть компоненты, которые установлены для пользовательской части cms, далее каталог com_news
. И начинаем, как обычно, с главной точки входа index.php
и контроллера controller.php
.
Поэтому данные файлы я открываю в текстовом редакторе. Их код аналогичен коду панели администратора. Поэтому открываем точку входа в панель администратора компонента новостей, копируем и добавляем в код глобальной точки входа в пользовательскую часть. Здесь мы проверяем, определена ли системная константа, далее получаем объект главного контроллера компонента $controller
, то есть используя родительский контроллер JControllerLegasy
мы вызываем на исполнение метод getInstance
, который реализует синглтон и возвращает объект класса, часть имени которого передается в качестве параметра News
. То есть здесь мы возвращаем объект класса NewsController
.
Далее мы сканируем адресную строку, то есть мы получаем объект класса JFactory
, который используется для работы с различными входными параметрами. И у объекта $controller
вызываем на исполнение метод execute()
, который выполняет поставленную задачу, при этом пытаемся получить значение данной задачи из входных параметров. То есть пытаемся получить содержимое параметра task
у объекта JFactory
. Далее выполняем перенаправление, если таковы были установлены в контроллере. То есть метод redirect()
осуществляет перенаправление, которое установлено зарегистрированым методом SetRedirect
. Сохраняем изменения.
Далее аналогично создаем контроллер, то есть класс NewsController
. Код данного контроллера мы позаимствуем непосредственно у контроллера панели администратора. Единственная, что нам сейчас не нужно свойство $default_view
. Соответственно удаляем данное свойство, сохраняем изменения. Вот и точка входа и главный контроллер у нас уже реализованы. Теперь необходимо создать вид.
Начнем с того, что возвращаемся в исходнике компонента в каталоге views создаем вид news
. Вид, который будет использоваться для отображения списка новостей, добавленных в базу данных. Далее переходим в данный каталог и создаем логический файл вида. То есть view.html.php
. Далее создаем каталог tmpl
, в котором мы будем хранить макет вида. И в данном каталоге создаем макет default.php
.
Возвращаемся в файл view.html.php
. Здесь мы должны описать класс будущего вида, то есть класс имя компонента NewsViewNews
. Данный класс наследует функционал родительского класса JViewLegacy
. Внутри данного класса мы переопределяем метод display()
, который отобразит данные на экране. При этом мы должны вызвать на исполнение родительский метод display()
, который и погрузит нужный макет и отобразит данные на экране. При этом данные мы должны сформировать, а значит, мы обращаемся к свойству items
(данное свойство мы здесь же и объявляем: protected $items
), и данные вида сформируют модель. То есть из вида мы должны осуществить запрос данных у модели, а значит, мы вызываем на исполнение метод-посредник get
, который обратится к модели и вызовет на исполнение метод get('Items')
.
Модель мы будем создавать как наследник глобального класса модели JModelsList
а значит данный метод уже описан у модели. То есть метод getItems
уже описан, единственно необходимо создать…
Для того, чтобы полностью разобраться, как отобразить в пользовательской части сайта список ранее добавленных новостей. При этом Вы узнаете, как формируется пользовательская часть компонента, как реализовать ссылку в главном меню сайта на интересующий вид компонента, а также как выбрать из базы данных записи по определенным условиям. Для этого смотрите видео-урок канала WebForMySelf на YouTube:
Продолжение → «Урок 9. Страница детального просмотра новости»
Ссылка на оглавление со списком всех уроков мини-курса WebForMySelf «Создание компонента для Joomla 3 за два вечера»
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)