Самое начальное по функционированию компонентов
From Joomla! Documentation
Этот документ написан для начинающих [пользователей системы] Joomla!; его назначение - объяснить что такое компоненты Joomla! и как они функционируют. Когда пример с каким-либо определенным компонентом может быть полезным, то этот документ будет ссылаться на компонент-образец под названием 'Hello World!'.
Что такое компонент Joomlaǃ
Компонент - это вид расширения [системы] Joomla!. Компоненты являются главными функциональными единицами [системы] Joomla! и их можно рассматривать как мини-приложения. Простейшей аналогией будет [представить себе что] Joomla! - это операционная система и [ее] компоненты - это приложения рабочего стола. Создаваемое каким-либо компонентом содержимое обычно показано в центре главной части шаблона (в зависимости от самого шаблона).
Большинство компонентов состоят из двух частей: административной части и лицевой части. Лицевая часть - это то, что используется для предоставления веб-страниц Вашего вебсайта, когда [их] запрашивают во время обычной работы [с] сайтом. Административная часть предоставляет интерфейс для настройки и управления различных аспектов данного компонента и доступна [к нему] через административное приложение.
Joomla! поставляется с набором компонентов ядра [системы, такими] как система управления содержимым, контактные веб-формы и [система управления] веб-ссылками.
Во фреймворке Joomla! компонент может быть спроектирован с использованием простой модели (возвращая код HTML запрошенной веб-страницы) или в шаблоне [проектирования] 'Model-View-Controller' (здесь и далее упомянутой как MVC).
Вступление в MVC
MVC - это шаблон проектирования программного обеспечения, который может быть использован так, чтобы отделять друг от друга логику программного обеспечения и то, как оно выглядит. Основанием для такого подхода является то, что если логика программного обеспечения сгруппирована в своем разделе, то тогда интерфейс и взаимодействие с пользователями, которые включают в себя данные, могут быть пересмотрены и подстроены под индивидуальные требования без необходимости перепрограммирования деловой логики. Модель MVC была изначально разработана для связки задач ввода данных, их обработки и их вывода в логичную архитектуру графического интерфейса пользователя.
Модель
Данная модель является частью компонента, которая содержит данные самого приложения. Она часто предоставляет процедуры для существенного управления и манипулирования этими данными в дополнение к процедурам, которые извлекают эти данные из этой модели. В общем, лежащая в основании техника доступа к данным должна быть включена в такую модель. Таким образом, если приложение перемещается из системы, которая содержит информацию в обычном файле, в систему, которая использует [для этого] базу данных, то единственным элементом, который будет необходимо изменить, будет сама эта модель, а не данные представление или контроллер.
Представление
Представление это часть компонента, которая используется для отображения данных из модели в подходящем для взаимодействия с пользователем виде. Для веб-приложения, представление, как правило, будет HTML-страница, которая возвращается пользователю. Представление (вид) извлекает данные из модели (которая передается от контроллера) и передает данные в шаблон, который заполняется и показывается пользователю. Представление (вид) не вызывает данные, которые будут изменены в любом случае, оно только отображает данные полученные от модели.
Контроллер
Контроллер (controller) отвечает за операции пользователя. В случае с веб-приложением, операцией пользователя обычно является запрос страницы. Контроллер (controller) определит какой именно запрос был создан конкретным пользователем и соответственно ответит [на это] запустив [в работу] данную модель (model) для манипулирования нужных данных и передачи данной модели (model) надлежащему представлению (view). Сам контроллер (controller) не показывает данные в модели (model), - он только запускает [в работу] методы в модели, которая вносит изменения в данные, и затем передает эту модель в представление (view), которое показывыет эти данные.
Объяснение фреймворка компонента [системы] Joomla!
Модель
Во фреймворке Joomla модели отвечают за управление данными. Первой функцией, которая должна быть написана для какой-либо модели, является функция get. Она возвращает данные тому, что вызывает ее. Например, таким вызывателем может быть представление HelloWorldViewHelloWorld. По умолчанию, эта названная HelloWorldViewHelloWorld и обитающая в site/models/helloworld.php модель является главной моделью, связанной с этим представлением.
Так что давайте бросим беглый взгляд на пример с общепринятым наименованием, поскольку то, что приводит все в работу - это именно то, как Вы ведете свое наименование.
Класс HelloWorldViewHelloWorld обитает в site/views/helloworld/view.html.php и он будет использовать обитающий в site/models/helloworld.php класс HelloWorldModelHelloWorld.
Так что давайте предположим, что мы желаем использовать воображаемое представление fluffy. Тогда мы имеем:
Данный класс HelloWorldViewFluffy обитает в site/views/fluffy/view.html.php. Данное представление воспользуется HelloWorldModelFluffy в файле site/models/fluffy.php. Примечание: для того, чтобы этот пример сработал, требуется сам экран этого представления: site/views/fluffy/tmpl/default.php. Нарушение этих выделенных жирным шрифтом наименований приведет к ошибкам или пустой веб-странице.
Вход в компонент системы Joomlaǃ
Сначала нам необходим доступ к платформе Joomla!, доступ к которой всегда осуществляется из одной точки. Пройдите в предпочитаемом Вами браузере по следующей ссылке URL:
1 | доступ пользователя | <ваш_вебсайт>/joomla/index.php |
2 | доступ администратора | <ваш_вебсайт>/joomla/administrator/index.php |
Пример Hello World!: localhost/joomla/index.php Для того, чтобы пройти в компонент, Вы можете использовать эту URL ссылку компонента или Menu. В этой статье мы обсудим использование URL.
1 | доступ пользователя | <ваш_вебсайт>/joomla/index.php?option=com_<component_name> |
2 | доступ администратора | <ваш_вебсайт>/joomla/administrator/index.php?option=com_<component_name> |
Пример "Hello World!": localhost/joomla/index.php?option=com_helloworld
Начальная структура директории MVC
Компоненты содержатся внутри директории Вашей установки [системы] Joomla!, а именно в *htdocs/<путь_к_вашей_joomla>/components/com_<название_вашего_компонента>/ .
Наш компонент The Hello World! будет храниться в htdocs/<путь_к_joomla>/components/com_helloworld/.
Простой компонент будет содержать в своей директории следующие файлы:
- Это html файл, который нужен для безопасности, который содержит только цвет заднего фонаː index.html
- Это php файл, который представляет сам контроллерː controller.php
- Это php файл, который загружает класс контроллераː <название_компонента>.php
- Это php файл, который представляет саму модельː models/<название_компонента>.php
- Еще один html файл для контроля цвета заднего фонаː models/index.html
- Это php файл, содержащий представление (view) по умолчаниюː views/<название_компонента>/tmpl/default.php
- Это xml файл для добавления типа пункта менюː views/<название_компонента>/tmpl/default.xml
- Это еще одни html файл для контроля цвета заднего фонаː views/<название_компонента>/tmpl/index.html
- Это еще один html файл для контроля цвета заднего фонаː views/<название_компонента>/index.html
- Это php файл для показа представления (view)ː views/<название_компонента>/view.html.php
JEXEC
Следующая строчка обычно присутствует в начале всех PHP файлов системы Joomla!:
<?php
defined('_JEXEC') or die('Restricted Access');
Это входная точка безопасности в платформу Joomla!. Этот вики документ по JEXEC содержит более подробное пояснение об этом.
Уроки по проектированию компонента в MVC
Если Вы желаете научиться проектировать свой собственный компонент в модели MVC, то, пожалуйста, пройдите соответствующий урок по свой версии Joomla!.