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

Смотрите также:
Комментарии (19) Добавить комментарий
  • 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  ↓     ответ

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

  • tinyurl.com
    tinyurl.com
    24 Ноября 2019, 09:19
     ↑  0  ↓     ответ

    I'm extremely inspired along with your writing skills as neatly as with the layout for your

    weblog. Is that this a paid subject or did you modify it yourself?

    Either way keep up the nice high quality writing, it's rare to see

    a nice blog like this one nowadays..

  • tinyurl.com
    tinyurl.com
    24 Ноября 2019, 14:16
     ↑  0  ↓     ответ

    hello!,I love your writing so so much! proportion we keep

    up a correspondence more about your article on AOL? I need an expert on this

    space to resolve my problem. Maybe that is you! Looking ahead to see you.

  • plenty of fish dating site
    plenty of fish dating site
    26 Ноября 2019, 12:33
     ↑  0  ↓     ответ

    I am extremely impressed with your writing skills as smartly as with the format to your weblog.

    Is that this a paid theme or did you customize it yourself?

    Anyway stay up the excellent quality writing, it's uncommon to look a great weblog like this one nowadays..

  • Linette
    Linette
    22 Октября 2020, 18:14
     ↑  0  ↓     ответ

    I used to be recommended this web site by means of my cousin.

    I'm now not certain whether or not this submit is written via him as nobody else understand such certain about my

    difficulty. You're incredible! Thanks!

  • 0mniartist
    0mniartist
    08 Апреля 2021, 04:59
     ↑  0  ↓     ответ

    I visited multiple web pages but the audio feature for audio songs

    present at this web site is really wonderful.

    asmr 0mniartist

  • 0mniartist
    0mniartist
    08 Апреля 2021, 18:01
     ↑  0  ↓     ответ

    Hi there, I would like to subscribe for this

    website to get latest updates, so where can i do it please assist.

    asmr 0mniartist

  • 0mniartist
    0mniartist
    09 Апреля 2021, 07:49
     ↑  0  ↓     ответ

    Hi, all is going well here and ofcourse every one is sharing

    data, that's genuinely fine, keep up writing.

    asmr 0mniartist

  • appyeet
    appyeet
    09 Апреля 2021, 11:37
     ↑  0  ↓     ответ

    This is a topic that is close to my heart...

    Best wishes! Exactly where are your contact details though?

  • 0mniartist
    0mniartist
    09 Апреля 2021, 13:03
     ↑  0  ↓     ответ

    Thanks , I have recently been looking for info approximately this subject for ages

    and yours is the greatest I've found out till

    now. However, what about the conclusion? Are you certain in regards to

    the source? asmr 0mniartist

  • icycoupons
    icycoupons
    09 Апреля 2021, 17:11
     ↑  0  ↓     ответ

    Hi! I just wanted to ask if you ever have any trouble with hackers?

    My last blog (wordpress) was hacked and I ended up losing months of hard work

    due to no data backup. Do you have any methods to prevent hackers?

  • 0mniartist
    0mniartist
    09 Апреля 2021, 23:31
     ↑  0  ↓     ответ

    Great post. I was checking constantly this blog and I am impressed!

    Very helpful information specifically the last part :) I

    care for such information much. I was seeking this certain info for a very long time.

    Thank you and best of luck. 0mniartist asmr

  • gs855
    gs855
    10 Апреля 2021, 14:35
     ↑  0  ↓     ответ

    Great post! We will be linking to this great post on our site.

    Keep up the good writing.

  • gamecrook
    gamecrook
    10 Апреля 2021, 18:48
     ↑  0  ↓     ответ

    Have you ever considered publishing an e-book or guest

    authoring on other sites? I have a blog centered on the same topics you discuss and would really like to have

    you share some stories/information. I know my viewers would appreciate your work.

    If you're even remotely interested, feel free to send

    me an e-mail.

  • applob
    applob
    11 Апреля 2021, 14:46
     ↑  0  ↓     ответ

    Wow, this piece of writing is nice, my younger sister is analyzing such things,

    so I am going to tell her.

  • G?venilir Takip?i Sat?n Al
    G?venilir Takip?i Sat?n Al
    19 Апреля 2021, 06:03
     ↑  0  ↓     ответ

    Goode info. Lucky mes I came avcross your blog by accident (stumbleupon).

    I haves saved as a favorites for later! https://trmedya-3.blogspot.com/

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




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

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