Поиск…


замечания

Настройка основной функциональности с помощью тем

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

Проекты на уровне магазина

Иерархические структурированные темы Magento означают, что базовую тему можно расширить и присвоить на уровне магазина.

Регистрация пользовательских тем

Темы можно настроить тремя способами:

  1. Для магазина в разделе «Система»> «Конфигурация»> «Дизайн».
  2. Изменение дизайна с временными ограничениями Система> Дизайн.
  3. Исключение темы также можно установить на уровне категории и продукта.

Пакет против темы

Пакет имеет несколько тем. Каждая из тем в пакете наследуется от темы по умолчанию в пакете.

Обратная связь

Процедура отмены темы для поиска файлов шаблонов:

  1. {Пакет} / {} тема
  2. {Пакет} / по умолчанию
  3. базовый / по умолчанию

Чтобы добавить дополнительные каталоги в механизм резервного копирования темы, необходимо переписать метод 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()
);
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow