magento
Rendering
Поиск…
замечания
Настройка основной функциональности с помощью тем
Темы имеют файлы макетов, которые, среди прочего, могут использоваться для изменения того, какие блоки появляются на странице. Шаблон блока также можно изменить и вызвать различные методы.
Проекты на уровне магазина
Иерархические структурированные темы Magento означают, что базовую тему можно расширить и присвоить на уровне магазина.
Регистрация пользовательских тем
Темы можно настроить тремя способами:
- Для магазина в разделе «Система»> «Конфигурация»> «Дизайн».
- Изменение дизайна с временными ограничениями Система> Дизайн.
- Исключение темы также можно установить на уровне категории и продукта.
Пакет против темы
Пакет имеет несколько тем. Каждая из тем в пакете наследуется от темы по умолчанию в пакете.
Обратная связь
Процедура отмены темы для поиска файлов шаблонов:
- {Пакет} / {} тема
- {Пакет} / по умолчанию
- базовый / по умолчанию
Чтобы добавить дополнительные каталоги в механизм резервного копирования темы, необходимо переписать метод Mage_Core_Model_Design_Package :: getFilename
Для области администрирования резервная копия по умолчанию / по умолчанию.
Шаблоны шаблонов и макетов
Блоки
Блоки используются для вывода. Корневой блок является родительским для всех блоков и имеет тип 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 считает, какие блоки необходимо создать для каждой страницы, посмотрев на макеты.
Все выходные блоки отображаются, например, вызывая toHtml (), которые, в свою очередь, могут отображать их дочерние элементы.
Текстовые и текстовые блоки автоматически отображают их содержимое.
Есть два события, которые запускаются вокруг рендеринга блоков, которые могут быть использованы для изменения блока до и после рендеринга HTML:
core_block_abstract_to_html_before core_block_abstract_to_html_after Детский блок будет отображаться только автоматически, если он принадлежит классу Mage_Core_Block_Textlist, иначе метод getChildHtml должен быть вызван.
К экземплярам блоков можно получить доступ через макет, например Mage :: app () -> getLayout () и $ controller-> getLayout (). Выход блока управляется функцией _toHtml ().
Шаблоны визуализируются методами renderView () / fetchView () внутри блока шаблонов. Буферизацию вывода можно отключить с помощью $ layout-> setDirectOutput.
Можно добавить блок к текущему макету, но это необходимо сделать до вызова метода renderLayout ().
Макет XML
<reference>
-edit a block
<block>
- define a block
<action>
- call method on a block
<update>
- include nodes from another handle.
Файлы макетов можно зарегистрировать в файле config.xml:
<config>
<{area}>
<layout>
<updates>
<{name}>
<file>{filepath}</file>
</{name}>
</updates>
</layout>
</{area}>
</config>
Вывод страницы можно настроить следующим образом:
- Изменение шаблона
- Изменения макета
- Перекрытие блоков
- Наблюдатели Переменные на блоках могут быть установлены следующими способами:
- Макет - через действия или атрибуты
- Контроллер - $ this-getLayout () -> getBlock ()
- Детские блоки - $ this-> getChild ()
- Другое -Mage :: app () -> getLayout ()
Активы головного блока
Атрибуты JavaScript и CSS обрабатываются в блоке Mage_Page_Block_Html_head. Этот блок обрабатывает объединение активов в один файл, чтобы минимизировать HTTP-запросы. Объединенный файл основан на времени редактирования исходных файлов.
При объединении CSS функция обратного вызова в Mage_Core_Model_Design_Package вызывается для обновления любых директив @import или url () с правильными URL-адресами
Различные механизмы отключения вывода блока
- Если ответ уже создан и задан для объекта ответа за пределами обычного процесса рендеринга (например, в наблюдателе), флаг «no-renderLayout» может быть установлен на контроллере действия, используя
Mage::app()->getFrontController()->getAction()->setFlag('','no-renderLayout');
- Это мешает
renderLayout()
обрабатывать выходные блоки. - То же самое можно достичь, вызвав setNoRender (true) на переднем контроллере:
Mage::app()->getFrontController()->setNoRender(true);
-
isDispatched()
флагаisDispatched()
в объекте ответа может быть более эффективным для достижения аналогичного эффекта.
различные типы блоков
- Mage_Core_Block_Template
- Mage_Core_Block_Text_List
- Mage_Core_Block_Messages
- Mage_Core_Block_Text_Tag
- Mage_Core_Block_Text
- Mage_Page_Block_Template_Links Все блоки представляют собой либо структурные блоки, либо все блоки являются либо структурными блоками, либо блоками контента. Пример:
- ядро / text_list
Пример структурного блока .
Он не использует шаблоны; он просто используется для вывода содержимого всех его дочерних блоков один за другим.
- ядро / шаблон
Пример блока контента .
Выход этого типа блока зависит от назначенного шаблона. Это дочерние блоки выводятся внутри шаблона с помощью метода getChildHtml ('block_name'). Пример: core / text_list - Пример структурного блока. Он не использует шаблоны; он просто используется для вывода содержимого всех его дочерних блоков один за другим. core / template - Пример блока содержимого. Выход этого типа блока зависит от назначенного шаблона. Это дочерние блоки выводятся внутри шаблона с помощью метода getChildHtml ('block_name').
К экземплярам блоков можно получить доступ с контроллера
Из контроллера действия:
$this->getLayout()->getBlock('head')->getTemplate();
/**
* Get specified tab grid
*/
public function gridOnlyAction()
{
$this->_initProduct();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/catalog_product_edit_tab_' .
$this->getRequest()->gerParam('gridOnlyBlock')
)
->toHtml()
);
}