RSS   Twitter   Copiny   Copiny
Нашел ошибку? 

Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!

Файловая структура компонента Joomla и именование классов

Компоненты в Joomla 1.5 теперь могут воспользоваться преимуществами гибкости и мощности с использованием объектно-ориентированного программирования (ООП) практики. Большинство сложных компонентов будет следовать Model-View-Controller (MVC) дизайн шаблона. Эта модель отделяющей сбора данных (модели), представление (View) и взаимодействия с пользователем (Контролер) деятельности компонента. Такое разделение позволяет для расширения или пересмотра свойствами и методами одной секции, не требуя дополнительных изменений в другие разделы.

В этой статье {componentName} будет обозначать название компонента, {site} — для лицевой части сайта, {admin} — для панели управления. Отметим, так же что практически все названия регистрозависимые. Для условности будем обозначать так: если написано {componentname} — это нижний регистр, если {COMPONENTNAME} — соответственно верхний, {ComponentName} — каждая первая верхняя.

Еще раз повторимся что очень важно соблюдать регистр букв при именовании папок, файлов, классов, функций, переменных… .

Структура инсталляционного файла компонента

Архив должен содержать две папки

  • admin
  • site

После установки, содержимое папки «site» попадет в «/components/com_{componentname}». А содержимое папки «admin» будет распаковано в «/administrator/components/com_{componentname}».

/site

Папка содержит файлы для лицевой части компонента.

/site/{componentname}.php
Это точка входа (или точка отправления) для лицевой части компонента. является главным обязательным файлом.
/site/controller.php
Этот файл содержит контроллер front-End либо подключает необходимый файл, в зависимости от внешних, который объявляет класс с именем «{ComponentName}Controller». Этот класс должен расширять базовый класс «JController».
/site/views
Директория содержит различные Виды(View) для компонента.
/site/views/{viewname}
Папка содержит файлы определенного Вида(View).
/site/views/{viewname}/view.html.php
Этот файл — это точка входа для вида {ViewName}. Он объявляет класс {ComponentName}View{ViewName}. Этот класс должен расширять базовый класс «JView».
/site/views/{viewname}/tmpl
папка содержит файл шаблона для Вида {ViewName}.
/site/views/{viewname}/tmpl/default.php
Это файл по умолчанию для Вида {ViewName}.
/site/models
Папка содержит различные модели, в которых нуждается приложение (компонент).
/site/models/{modelname}.php
Этот файл содержит модель с классом {ComponentName}Model{ModelName}. Он должен расширять класс «JModel». Обратите внимание, что Вид с именем {ViewName} будет по умолчанию загружать модель с именем {ViewName} если он создан. Большинство моделей именуются так же как и соответствующий вид, т.к они обычно используются вместе.
/site/controllers
Папка содержит расширяющие контроллеры для основного, либо набор необходимых приложению контроллеров.
/site/controllers/{controllername}.php
Этот файл содержит класс контроллера {ComponentName}Controller{ControllerName}. Он должен расширять класс «JController»

/admin

Файловая структура в точности повторяется как и для лицевой части, описанной выше. Обратите внимание, что нет ничего общего (если конечно это не явно описано в программном коде) между лицевой и административной частями компонента. По большому счету это можно рассматривать как два отдельных компонента. При этом могут получаться моменты с одинаковыми названиями файлов и даже классов и функций. Но тем не менее они не будут пересекаться во время работы сайта.

Схематическое изображение основных составляющих компонента Joomla

Схема структуры компонента Joomla

Смотрите также:
Комментарии (4) Добавить комментарий
  • Avtop
    Avtop
    25 Мая 2011, 19:52
     ↑  +1  ↓     ответ

    Спасибо за четкие разъяснения!

    А картинка вообще все расставила на свои места ;)

  • Евгений
    Евгений
    27 Апреля 2012, 19:39
     ↑  +1  ↓     ответ

    Спасибо, очень хорошее разъяснение темы создания компонентов. В интернете очень мало подобной информации.

  • Рейкбек
    Рейкбек
    02 Октября 2012, 15:12
     ↑  +2  ↓     ответ

    Для 2.5 это также актуально? Вообще хотелось бы увидеть про 2.5 побольше информации на Вашем сайте.

    Спасибо!

  • Spyer
    Spyer
    24 Апреля 2013, 17:45
     ↑  +2  ↓     ответ

    Расписано неплохо, а про взаимлдействие вьюх моделей и контролеров можно еще статейку.

Оставить комментарий




* обязательно для заполнения

1 введенный почтовый адрес используется только для обратной связи при ответах в комментариях и сервиса gravatar.com
.