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を使用しようとし、1列のテンプレートを設定しようとします。その後、コマンド「ねえ、テンプレートを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 に答える