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

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

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

/app/ – папка містить модулі, теми, конфігураційні файли та файли перекладів. Також вона містить файли шаблонів для адміністративної панелі та установчі файли;
/app/etc – містить загальну конфігурацію
/app/code – містить різні модулі (моделі, контролери, хелпери, блоки, і т.п.)
/app/code/core – містить модулі Magento, розроблені власною командою
/app/code/community – містить модулі, розроблені у співтоваристві Мадженто
/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 (наприклад, ua_UA)} – 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, а також моделі побудови цієї платформи.
Якщо у вас є питання, що стосуються статті, не соромтеся залишати їх у коментарях нижче.
Корисного кодування!