Структура Magento – архитектура файлов CMS

Сегодня мы продолжим серию уроков по Мадженто для начинающих и разберем составляющие архитектуры движка.

Основные файлы и папки платформы:

/app/ — папка содержит модули, темы, конфигурационные файлы и файлы переводов. Также она содержит файлы шаблонов для административной панели и установочные файлы;
/app/etc – содержит общую конфигурацию
/app/code – содержит разные модули (модели, контроллеры, помощники, блоки, и т.д.)
/app/code/core – содержит модули Magento, разработанные собственной командой
/app/code/community – содержит модули, разработанные в сообществе Magento
/app/code/local – содержит модули, разработанные другими специалистами
/app/code/core/Mage – пространство имен magento по умолчанию
/app/code/core/Mage/{Module} – корневая папка модуля
/app/code/core/Mage/{Module}/etc – конфигурация модуля
/app/code/core/Mage/{Module}/controllers – контроллеры модуля
/app/code/core/Mage/{Module}/Block – блок логических классов
/app/code/core/Mage/{Module}/Model – объектные модели снабженные модулем
/app/code/core/Mage/{Module}/Model/Mysql4 – источники модели в модуле (:))
/app/code/core/Mage/{Module}/sql – установка и обновление sql-данных модуля
/app/code/core/Mage/{Module}/sql/{resource}/ — источник обновлений модуля
/app/code/core/Mage/{Module}/sql/{resource}/{type}-{action}-{versions}.(sql|php) – файлы-источники обновления. Например: mysql4-upgrade-0.1.0-0.1.1.sql
/app/design – тут размещаются компоненты дизайна (шаблоны, макеты, переводы)
/app/design/frontend – дизайн фронтенда (пользовательской части сайта)
/app/design/adminhtml – дизайн административной части сайта
/app/design/{area}/{package}/{theme} – настройки (конфигурация) темы
/app/design/{area}/{package}/{theme}/layout — .xml файлы, которые определяют структурные блоки для различных представлений сайта
/app/design/{area}/{package}/{theme}/template – шаблоны в формате .phtml (html вместе с php)
/app/design/{area}/{package}/{theme}/locale — Zend_Translate совместимые файлы переводов Пакета/Темы
/app/locale – файлы локализаций (переводов)
/app/locale/{locale (например, ru_RU)} — Zend_Translate совместимые файлы переводов модулей (общие переводы сайта)
/404 – папка, которая может содержать шаблоны и оформление страницы с 404-й ошибкой;
/downloader — это хранилище для загружаемых данных. В основном используется для инсталляционных файлов и файлов обновлений, загруженных через браузер;
/errors – каталог содержит шаблоны отображения ошибок в системе Magento;
/includes – содержит файл настроек config.php
/js – здесь хранятся глобальные файлы javascript
/lib – папка содержит библиотеки системы, такие как Zend и Varien
/media – каталог хранит загруженные медиа-файлы (изображения товаров, pdf документы и др.)
/pkginfo – содержит файлы с информацией об изменениях при обновлении модулей;
/skin/{area}/{package}/{theme}/ — место, где размещаются файлы стилей (CSS) и картинки Пакета/Темы
/var – папка для временных файлов. Здесь можно найти файлы кэша, сеансов, резервного копирования базы данных, экспорта, отчетов об ошибках;
.htaccess – файл содержит правила редиректов mod_rewrite. Также он содержит стандартные директивы веб-сервера и PHP, которые позволяют улучшить производительность и безопасность сайта;
.htaccess.sample – это бэкап основного .htaccess файла. Если вы изменяли основной файл, бэкап можно использовать для возврата к настройкам по умолчанию;
cron.php – файл скриптов, которые должны выполняться системой по расписанию;
favicon.ico – «фавикон» Magento по умолчанию. Эта маленькая иконка отображается в верхней панели браузера, в закладке вашего сайта;
index.php – основной, индексный файл Magento;
index.php.sample – архивная копия основного index файла. Он может быть использован для отмены изменений в случае модификации index.php;
LICENSE_AFL.txt – условия лицензии AFL (Academic Free License), под которой распространяется Magento;
LICENSE.txt – условия лицензии Open Software License на Magento;
php.ini.sample – файл содержит образцы php-директив, которые могут быть использованы для модификации настроек PHP. Если вы хотите задействовать эти настройки – переименуйте его в php.ini

Общие представления о работе платформы

В основе движка лежит идеальное сочетание Zend Framework с архитектурой MVC (Model — View — Controller).



Zend Framework: фреймворк реализован на PHP и является в настоящее время одним из наиболее мощных и широко используемых, благодаря сильным и уникальным особенностям. Используя Zend, можно достаточно легко расширять число классов и интегрировать различные библиотеки без конфликтов в конфигурации.
MVC: Model-View-Controller (Модель-Представление-Поведение) – программный шаблон проектирования для реализации пользовательских интерфейсов. Шаблон проектирования разделен на три взаимосвязанные компонента для того, чтобы модификация одного из них оказывала минимальное воздействие на остальные.

  • Модель: обеспечивает классификацию данных и методы работы с ними, при запросах реагирует и изменяет свое состояние.
  • Вид (Представление): запрашивает информацию из модели, которую он использует для генерации выходного представления пользователю.
  • Контроллер (Поведение): может посылать команды и запросы на модель, чтобы обновить ее состояние (например, при редактировании документа).

 

Как устроен модуль в Magento

Модуль (расширение) Magento включает в себя следующие компоненты:
Block: загрузка данных Блока, применение данных из базы данных, перед отображением их в шаблоне.
Controller: получает запросы пользователей через HTTP и перенаправляет их на на класс для применения.
Etc: включает XML файлы, используемые для настройки модуля. Каждый модуль имеет соответствующие XML файлы.

  • Config.xml: используется для определения модели, хелпера, блока…
  • System.XML: создает пользовательские поля для меню в левой части админпанели (в разделе Система-Конфигурация).
  • Adminhtml.xml: файл конфигурации модуля в консоли администратора.

Helper: создает функции, которые можно использовать в разных местах системы. Хелпер также может быть вызван через: Mage::helper(‘module/helper’)->helperfunction();
Model: создает прямые запросы для отправки в базу данных.
Sql: Создает таблицы, обновляет их, изменяет базу данных.

 

Структура темы для Мадженто

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

  • /app/design/frontend/ПАКЕТ/НАЗВАНИЕ_ТЕМЫ/layout/ — содержит .xml файлы, определяющие, какие модули должны быть вызваны файлами шаблонов и загруженные в предопределенные блоки на сайте;
  • /app/design/frontend/ ПАКЕТ/НАЗВАНИЕ_ТЕМЫ /template/ — содержит файлы и подпапки с шаблонами финальной структуры, выводимой пользователю;
  • /skin/frontend/ ПАКЕТ/НАЗВАНИЕ_ТЕМЫ/ — содержит CSS, картинки, файлы JavaScript и Flash, которые относятся к шаблону.

 

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