Может кто подскажет в каком случае
<reference name="content">...</reference>
переписывает блок content, а в каком его дополняет?
Что делает макетный предикат «reference»?
19.01.2012 12:02
reference не переписывает и не дополняет блок.
Если вы откроете англо-русский словарь, то узнаете, что «reference» — это «ссылка».
Предикат reference ссылается на блок.
Операции же над блоком определяются внутри данного предиката.
Если вы откроете англо-русский словарь, то узнаете, что «reference» — это «ссылка».
Предикат reference ссылается на блок.
Операции же над блоком определяются внутри данного предиката.
19.01.2012 12:19
в статье нашёл такой пример
<layout version="0.1.0">
<default>
<reference name="root">
<block type="page/html" name="root" output="toHtml" template="../../../../../code/local/Magentotutorial/Helloworld/simple_page.phtml" />
</reference>
</default>
</layout>
и далее "The Block named root has been replaced with our Block, which points at a different phtml Template file."
как тогда это понимать?
<layout version="0.1.0">
<default>
<reference name="root">
<block type="page/html" name="root" output="toHtml" template="../../../../../code/local/Magentotutorial/Helloworld/simple_page.phtml" />
</reference>
</default>
</layout>
и далее "The Block named root has been replaced with our Block, which points at a different phtml Template file."
как тогда это понимать?
19.01.2012 12:26
В данном примере макетный предикат reference ссылается на присутствующий в системе блок с именем root.
Далее внутри предиката расположено правило block, которое, в общем случае, добавляет новый блок внутрь указанного в reference блока.
Так как внутреннему блоку присвоено то же самое имя, что и родительскому блоку, то система перетирает родительский блок внутренним.
В таком ограниченном контексте родительский блок действительно переписывается.
Но это лишь одно применение блока reference из многих.
И пример этот — неряшлив, хотя и копируется бездумными блоггерами из статьи в статьи.
Вместо вместо уничтожения блока root только ради смены шаблона разумнее, понятнее и экономичнее по ресурсам использовать метод setTemplate внутри предиката reference.
Далее внутри предиката расположено правило block, которое, в общем случае, добавляет новый блок внутрь указанного в reference блока.
Так как внутреннему блоку присвоено то же самое имя, что и родительскому блоку, то система перетирает родительский блок внутренним.
В таком ограниченном контексте родительский блок действительно переписывается.
Но это лишь одно применение блока reference из многих.
И пример этот — неряшлив, хотя и копируется бездумными блоггерами из статьи в статьи.
Вместо вместо уничтожения блока root только ради смены шаблона разумнее, понятнее и экономичнее по ресурсам использовать метод setTemplate внутри предиката reference.