Модель-Вид-Контроллер
From Joomla! Documentation
Система Joomla! обширно использует шаблоны проектирования [в архитектуре] Модель-Вид-Контроллер.
Как только [система] Joomla! начала обработку какого-либо запроса какого-либо пользователя, такого как [запрос] GET для некоторой определенной страницы, или [запрос] POST содержащихся в какой-либо форме данных, одним из первых проводимых [системой] Joomla! действий является анализ URL ссылки для определения, какой компонент будет ответственен за обработку данного запроса и передача управления этому тому компоненту.
Если этот компонент был спроектирован [согласно схемы] MVC, то он передаст управление конкретному контроллеру. Этот контроллер отвечает за анализ данного запроса и определения какая модель/какие модели будут нужны для удовлетворения этого запроса и какая модель/какие модели должны быть использованы для возвращение результатов обратно данному пользователю.
Та модель/те модели инкапсулируют эти данные, используемые данным компонентом. В большинстве случаев эти данные будут поступать из базы данных, - либо [самой системы] Joomla!, либо какой-либо внешеней, но также возможно, что данная модель обретет данные из других источников, таких как работающий на другом сервере [интерфейс] API. В подходящих случаях, эта модель также отвечает за обновление базы данных. Цель этой модели - изолировать данный контролер и вид от подробных данных, [относящихся] к тому, как эти данные были получены или изменены.
Этот вид отвечает за генерацию вывода данных, отправляемых данным компонентом на веб-браузер. Он запрашивает у данной модели любые необходимые данные и форматирует их соответственным образом. Например, какой-либо список извлеченных из данной модели объектов данных может быть заключен данным видом в [код] таблицы в HTML.
Since Joomla is designed to be highly modular, the output from the component is generally only part of the complete web page that the user will ultimately see. Once the view has generated the output, the component hands control back to the Joomla framework which then loads and executes the template. The template combines the output from the component, and any modules that are active on the current page, so that it can be delivered to the browser as a single page.
Для того, чтобы предоставить веб-дизайнерам, которых может интересовать только новый дизайн, а не манипулирование находящимся под [дизайном] кодом, больше мощи и гибкости, [система] Joomla! разделяет традиционный вид на вид и макет. Сам вид вытягивает данные из данной модели, как в традиционном шаблоне проектирования MVC, но затем просто делает эти данные доступными данному макету, который отвечает за форматирование этих данных для [их] представления конкретному пользователю. Преимущество этого разделения в том, что система шаблонов Joomla предоставляет некий простой механизм для переопределения макетов в шаблоне. Эти переопределения макета (часто называемые "переопределение шаблона", поскольку они формируют часть конкретного шаблона, хотя [то] что фактически переопределяется - это данный макет) входят в состав шаблона и предоставляют дизайнеру данного шаблона полный контроль над всеми данными, выводимыми ядром Joomla! и любыми совместимыми со [схемой] шаблонного проектирования MVC установленными сторонними расширениями.