Контрольні нотатки для сертифікаційного екзамену Мадженто-розробника – ч.3

Рендеринг – частка в екзамені: 7%.

 

Налаштування базової функціональності за допомогою теми

Теми мають файли макетів, які, окрім іншого, можуть бути використані для зміни поведінки блоків на сторінці. Шаблон Блоку також може бути змінений, що дасть змогу викликати інші методи.

 

Дизайн на рівні магазину

Ієрархічна структурованість тем Magento означає, що базова тема може бути розширена і призначена на рівні магазину.

 

Реєстрація кастомних тем

Теми можуть бути налаштовані трьома шляхами:

  1. Через налаштування магазину в System > Configuration > Design
  2. Тимчасова зміна дизайну в System > Design
  3. Винятки застосування теми на рівні категорії та товару

 

Пакет проти Теми

Пакет має кілька тем. Кожна з тем в пакеті унаслідується від теми по-замовчуванню в пакеті (default).

 

Резерв дизайну

Запасним варіантом для задіяння теми є наступний порядок:

  1. {package}/{theme}
  2. {package}/default
  3. base/default

Щоб додати додаткові каталоги до запасного механізму тем, потрібно переписувати метод Mage_Core_Model_Design_Package::GetFileName.

Для адмінки запасний варіант це default/default.

 

Шляхи шаблону і макетів

Шлях файлів теми рендериться Mage_Core_Model_Design_PackageMage_Core_Model_Layout_Update запитує абсолютні шляхи для компонування файлів. Mage_Core_Block_Template запитує шаблони з відносними шляхами.

Magento використовує відносні шляхи, коли справа доходить до файлів шаблону і розмітки.

 

Блоки

Блоки використовуються для виводу (output). Кореневий блок (root) є батьківським для всіх блоків типу Mage_Page_Block_Html.

Блоки Mage_Core_Block_Template використовують файли шаблонів для відображення контенту. Файли шаблону задаються через setTemplate() або addData('template') з відносними шляхами.

Шаблони – це просто шматки PHP коду, що включені в Mage_Core_Block_Template. Тому $this в шаблоні відноситься до відповідного Блоку.

Mage_Core_Block_Template використовує буфер перед додаванням шаблону, щоб запобігти передчасному виводу.

Метод Mage_Core_Model_Layout::createBlock створює екземпляри блоків.

Клас Mage_Core_Model_Layout_Update вирішує, які блоки повинні бути створені для кожної сторінки, згідно зачіпок макету (handle).

Всі включені блоки рендеряться, наприклад, викликом toHtml(), який в свою чергу, рендерить свої нащадки.

Блоки типу Text і Text_List автоматично рендерять свій контент.

Є дві події, що спрацьовують під час рендерингу блока і які можна використовуватися для зміни блоку до і після візуалізації HTML:

  1. core_block_abstract_to_html_before
  2. core_block_abstract_to_html_after

 

Дочірний блок може бути згенерований автоматично, тільки якщо він є екземпляром класу Mage_Core_Block_Textlist, інакше повинен бути викликаний метод getChildHtml.

Екземпляр Блоку може бути доступний через макет, наприклад, Mage::app()->getLayout() і $controller->getLayout(). Вивід Блоку контролюється функцією _toHtml().

Шаблони генеруються через методи renderView()/fetchView(), всередині шаблону блоку. Буферизація виводу може бути відключена через $layout->setDirectOutput.

Можна додати Блок до поточного макету, але це повинно бути зроблено до виклику методу renderLayout().

 

XML Макет (Layout)

  • <reference>: редагувати блок
  • <block>: визначити блок
  • <action>: виклик методу в блоці
  • <update>: включити в себе вузли з іншого хендлера.

 

Файли макетів можна зареєструвати в config.xml:

<config>
 <{area}>
  <layout>
   <updates>
    <{name}>
      <file>{filepath}</file>
    </{name}>
   </updates>
  </layout>
 </{area}>
</config>

 

Вивід сторінки можна кастомізувати таким чином:

  • Зміни в шаблоні
  • Зміни в макеті
  • Перевизначення блоків
  • Спостерігачами (observers)

 

Змінні в блоках можуть бути встановлені таким чином:

  • Макет: за допомогою дій (actions) або атрибутів
  • Контролер: $this->getLayout()->getBlock()
  • Дочірні блоки: $this->getChild()
  • Інше: Mage::app()->getLayout()

 

Блок ресурсів у секції head

JavaScript і CSS ресурси обробляються в блоці Mage_Page_Block_Html_Head. Цей блок обробляє злиття ресурсів в один файл, щоб звести до мінімуму HTTP-запити. Об’єднаний файл базується на часі редагування початкових файлів.

Коли об’єднуються CSS файли, виклик функції в Mage_Core_Model_Design_Package звертається для оновлення будь якої @import або url() директив з правильними URL.

 

Адаптація перекладу: SebWeo

 

Recent Posts

Огляд WordPress 7.0 “Armstrong”: Нова ера ШІ та масштабна перебудова Core-архітектури

20 травня 2026 року офіційно відбувся реліз довгоочікуваної мажорної версії WordPress 7.0 «Armstrong», названої на…

1 день ago

History Hijacking: Чому Google карає за «зламану» кнопку Назад і як захистити сайт за допомогою CSP

Кожен власник сайту та SEO-спеціаліст веде щоденну запеклу боротьбу за утримання користувача на сторінках вебресурсу.…

2 дні ago

Як вибрати дитячі бутси для футбольної секції та не помилитися з типом підошви

Футбольна секція швидко показує, наскільки взуття підходить дитині. Якщо пара ковзає, тисне або погано чіпляється…

4 дні ago

Флагманський смартфон: чому варто купити Samsung Galaxy S26 Ultra

Компанія Samsung - один із лідерів на ринку електроніки. Її смартфони вирізняються надійністю, якісними дисплеями,…

4 дні ago

Дієслово dar в іспанській мові: значення, відмінювання та особливості використання

Іспанська мова приваблює мільйони людей своєю мелодійністю, емоційністю та відносною простотою вивчення. Одним із найважливіших…

2 тижні ago

Ідеальне робоче місце: збираємо надійний сетап для стабільної роботи та геймінгу

Робочий простір давно перестав бути просто столом із ПК/ноутбуком. Сьогодні це повноцінна екосистема, де кожна…

2 тижні ago