Проблема, с которой вы (вероятно) сталкиваетесь, заключается в том, что что-то приходит позже и снова устанавливает шаблон для корневого блока , переопределяя ваши изменения.
Более поздние версии Magento (1.4somethingish) представили способ предотвратить это. Если вы посмотрите в page.xml
, вы увидите такую ручку
<page_one_column translate="label">
<label>All One-Column Layout Pages</label>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
<!-- Mark root page block that template is applied -->
<action method="setIsHandle"><applied>1</applied></action>
</reference>
</page_one_column>
Если дескриптор page_one_column
применяется к вашему запросу, или вы применяете его вручную с помощью
<update handle="page_one_column" />
Magento изменит шаблон , а вызовет метод setIsHandle
в блоке.
<action method="setIsHandle"><applied>1</applied></action>
В Magento есть код, который будет искать свойство IsHandle, и если оно истинно, дальнейшие вызовы setTemplate
будут игнорироваться. (это немного упрощает вещи, но это более или менее верно)
Попробуйте что-то вроде
<default>
<reference name="root">
<action method="setTemplate">
<template>page/mytheme.phtml</template>
</action>
<action method="setIsHandle">
<applied>1</applied>
</action>
</reference>
</default>
И посмотрите, поможет ли это.
Имейте в виду, что это одна из тех серых областей, где неясно, если сторонние разработчики должны идти. Кроме того, изменение шаблона для всех страниц может оказать нежелательное влияние на те части сайта, которые ожидают присутствия в определенном шаблоне.