Контрольные заметки для сертификационного экзамена Мадженто-разработчика – ч.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.

 

 

Источник: http://magecert.com/rendering.html

Перевод: SebWeo

 

Tags: Magento

Recent Posts

Правильный выбор качественных игральных карт

Известно, что первые игральные карты были изобретены династией Тан в Китае еще в 9 веке.… Read More

15/11/2020

Как найти новую работу – лучшие тактики

Давно прошли те времена, когда люди получали работу сразу же после окончания учебы, и оставались… Read More

13/11/2020

Лицензирование Zoom в Украине – тарифы и цены

Самоизоляция 2020 года поставила людей в достаточно суровые условия – несмотря на вынужденные карантинные меры,… Read More

10/11/2020

Десятка самых хоккейных городов Украины

Есть ли в Украине хоккей? Многие поклонники этого вида спорта ассоциируют игру с шайбой на… Read More

09/11/2020

Достоинства б/у ноутбуков и критерии выбора техники

Современный рынок компьютерной техники постоянно обновляется, ежегодно предлагая пользователям новые и более мощные модели ПК… Read More

03/11/2020

Самые красивые водопады мира (часть 1)

Водопад – это одно из самых волнующих и красивых творений матушки-природы в мире. По всему… Read More

31/10/2020