2012-10-03 56 views
0

我使用下列到一個新的佈局手柄適用於聯繫人頁面:在Magento佈局使用update手柄設置根模板失敗

<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> 

回答

2

你給2個不同的指令來佈局:第一Magento的嘗試使用手柄test_contacts_set_root和嘗試設置1column模板,後來它滿足命令「嘿嘿,

<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的模板設置爲2columns-right.phtml」不考慮在什麼樣的順序指令放在XML節點。因此,首先它會查看該塊之後的句柄,並且僅在塊渲染操作期間執行。有關詳細信息,請參閱Mage_Core_Model_Layout和Mage_Core_Model_Layout_Update。

+0

但更新句柄標籤最後出現在兩個之外。你如何確保更新句柄最後被執行 –

+1

@MatyWallace更新指令總是先被解析,然後是來自調用句柄的指令。 – benmarks

+0

@benmarks多數民衆贊成在這愚蠢:(好吧,我想我需要一個替代方法來做到這一點,但我不知道如何。基本上我需要一個輔助手柄優先於主佈局處理 –