Структурные блоки и блоки содержимого в Мадженто – ч.2
В предыдущем уроке мы начали рассматривать эту важную и объемную тему. В сегодняшнем уроке мы продолжим изучать структурные блоки в Magento и рассмотрим их синтаксис, а также некоторые примеры использования.
Синтаксис обновления макета
Обновления пользовательского макета могут быть задействованы для страниц категорий, страниц товаров, и любых пользовательских CMS-страниц, для достижения таких результатов как:
<block> — Создание нового блока
<reference> — Обновление существующего контента
<action> — Назначение действия для блоков
<remove> — Удаление блоков
Любые изменения в макете задействуются, когда связанный объект — это может быть либо товар, категория, или CMS-страница, — становится активным во фронтенде интернет-магазина.
Нестандартные инструкции по обновлению макета образуются XML-тегами. Как и в обычном XML, каждый тег должен быть либо самозакрывающимся, либо закрытым, как показано в следующих примерах:
<tag attribute="value" /> <tag attribute="value"> ... </tag>
<block>
Создает новый блок в текущем контексте. Вложенность макета определяет порядок инициализации и расположения блоков на странице.
Синтаксис
| Имя атрибута | Значение | 
| type | block class path
 Идентификатор пути класса, который соответствует классу блока (например, cms/block).  | 
| name | block name identifier
 Имя, которое может быть использовано для адреса блока – идентификатор. Если вы создаете новый блок с таким же именем, вновь созданный блок заменяет ранее существующий блок.  | 
| before | block name | ‘-‘
 Используется для позиционирования блока перед блоком с именем, указанным в значении. Если используется значение «-«, блок располагается перед всеми другими родственными блоками.  | 
| after | block name | ‘-‘
 Используется для позиционирования блока после блока с именем, указанным в значении. Если используется значение «-«, блок располагается после всех других родственных блоков.  | 
| template | template filename
 Имя файла шаблона, который используется для конкретного типа блока.  | 
| as | block alias
 Алиас, с помощью которого шаблон вызывает блок, в котором назначен этот атрибут. Иногда обязательно нужно указывать алиас (псевдоним) для конкретного типа блока.  | 
<reference>
Изменяет контекст для всех включенных инструкций ранее определенного блока.
Синтаксис
| Имя атрибута | Значение | 
| name | block name
 Имя определенного ранее блока.  | 
<action>
Используется для доступа к API блока, другими словами, вызывает публичные методы блока. Он используется для настройки выполнения определенного метода при генерации блока.
Синтаксис
| Имя атрибута | Значение | 
| method | block method name
 Имя публичного метода блока, который вызывается во время генерации блока.  | 
<remove>
Удаляет существующий блок из макета.
Синтаксис
| Имя атрибута | Значение | 
| name | block name
 Имя блока, который нужно удалить.  | 
<extend>
Эта инструкция выполняет окончательные изменения в блоках, которые уже являются частью макета. Каждый атрибут в инструкции <block>, за исключением имени блока – подлежит изменению. Кроме того, специальный родительский атрибут может быть использован для изменения родителя блока. Проще говоря, укажите имя нового родительского блока в инструкции <extend>, и родительський блок, на который ссылается инструкция, будет изменен в макете.
Синтаксис
| Имя атрибута | Значение | 
| name | block name
 Имя любого блока, который нужно расширить (изменить).  | 
| * | any other
 Любой другой атрибут, характерный для инструкции данного <block>.  | 
| parent | block name
 Название блока, который должен стать новым родителем для определенного блока.  | 
Примеры обновления макета
Следующими типами блоков можно манипулировать с помощью пользовательских инструкций макета. Рассмотрим примеры синтаксиса.
Полный синтаксис
<!-- Действие может быть определено внутри инструкций <block> или <reference> -->
   <action method="someActionName">
      <arg1>Value 1</arg1>
      <arg2>Value 2</arg2>
      <!--   -->
      <argN>Value N</argN>
   </action>
Рассмотрим пример вывода CMS-блока на странице
Тип блока: cms/block
Синтаксис
| Действие (action) | Описание | 
setBlockId($blockId) | 
Указывает идентификатор CMS-блока; его содержимое будет отображаться при рендеринге страницы. | 
<reference name="content">
   <block type="cms/block" name="additional.info" as="additionalInfo">
      <action method="setBlockId"><id>additional_info</id></action>
   </block>
</reference>
Тип блока: core/text
С помощью блока core/text вы можете выводить текст в свободной форме, непосредственно в шаблоне.
Синтаксис
| Действие (action) | Описание | 
addText($textContent) | 
Определяет текст, который должен быть выведен как содержимое блока. Если вы используете HTML-теги как часть текста, рекомендуется использовать: <![CDATA[…]]> | 
<reference name="content">
   <block type="core/text" name="test.block">
      <action method="addText">
         <txt><![CDATA[<h2>Внимание!</h2><p>Проверьте что-то там</p>]]></txt>
      </action>
   </block>
</reference>
Если вы хотите тонкой настройки и нестандартного отображения своей темы (шаблона) на Мадженто – эффективно используйте структурные блоки в файлах макета (таких как local.xml, catalog.xml, page.xml) и ваш интернет-магазин будет уникальным и неповторимым!