0

我正在使用以下内容将新的布局句柄应用于联系人页面:

<update handle="test_contacts_set_root" />

我可以验证正在应用布局句柄。

不幸的是,以下内容现在有效:

<test_contacts_set_root>
    <reference name="root">
        <action method="setTemplate"><template>page/1column.phtml</template></action>
    </reference>
</test_contacts_set_root>

这是更改根模板的非常标准的布局代码。不幸的是,当与自定义布局句柄一起应用时,它没有任何效果。

我怀疑这与布局系统中的某种排序有关。

这是我的contacts.xml的全部内容

<layout version="0.1.0">
    <default>
        <reference name="footer_links">
            <action method="addLink" translate="label title" module="contacts" ifconfig="contacts/contacts/enabled"><label>Contact Us</label><url>contacts</url><title>Contact Us</title><prepare>true</prepare></action>
        </reference>
    </default>

    <contacts_index_index translate="label">
        <label>Contact Us Form</label>
        <reference name="head">
            <action method="setTitle" translate="title" module="contacts"><title>Contact Us</title></action>
        </reference>
        <reference name="root">
            <action method="setTemplate"><template>page/2columns-right.phtml</template></action>
            <action method="setHeaderTitle" translate="title" module="contacts"><title>Contact Us</title></action>
        </reference>

        <update handle="test_contacts_set_root" />

        <reference name="content">
            <block type="core/template" name="contactForm" template="contacts/form.phtml"/>
        </reference>
    </contacts_index_index>

    <test_contacts_set_root>
        <reference name="root">
            <action method="setTemplate"><template>page/1column.phtml</template></action>
        </reference>
    </test_contacts_set_root>

</layout>
4

1 回答 1

2

您对布局给出了 2 个不同的指令:首先 magento 尝试使用句柄 test_contacts_set_root 并尝试设置 1column 模板,然后它遇到命令“嘿,将模板设置为 2columns-right.phtml”

<reference name="root">
    <action method="setTemplate"><template>page/2columns-right.phtml</template></action>
    <action method="setHeaderTitle" translate="title" module="contacts"><title>Contact Us</title></action>
</reference>

Magento 不考虑在 xml 节点中放置指令的顺序。所以首先它会在块之后查看句柄,并且仅在块渲染动作执行期间。您可以查看 Mage_Core_Model_Layout 和 Mage_Core_Model_Layout_Update 了解详细信息。

于 2012-10-03T19:00:23.137 回答