2011-08-04 60 views
4

我想盡可能只使用local.xml自定義一個主題。我想在不改變header.phtml的情況下在頭上添加一個靜態塊。此代碼適用於內容區域,但不適用於標題:在Magento中,我可以僅通過xml向頭添加一個靜態塊嗎?

<default> 
    <reference name="content"> 
     <block type="cms/block" name="how-it-works-button"> 
      <action method="setBlockId"><block_id>how-it-works</block_id></action> 
     </block> 
    </reference> 
</default> 

任何人都知道爲什麼?我認爲我需要的只是把「內容」改爲「標題」,但是當我這樣做的時候什麼也沒有顯示出來。

感謝您的幫助!

回答

0

add block =「toHtml」in block tag。我認爲這只是。

+0

這僅僅是那種我一直在尋找的東西。但是,當我使用它時,靜態塊出現在頁面的底部,甚至在頁腳的下方。 Alan Storm的評論讓我清楚這是爲什麼,但是謝謝你的有用實驗! –

4

content塊是一個特殊塊,被稱爲core/text_list塊(PHP類Mage_Core_Block_Text_List)。這些塊會自動渲染添加到它們的任何子塊。

另一方面,header塊是page/html_header塊(PHP類Mage_Page_Block_Html_Header)。該塊類繼承自Mage_Core_Block_Template,使其成爲core/template塊。模板塊將只有渲染子塊,如果其相應的phtml模板請求該塊。因此,通過將標題添加到標題中,您只需完成一半所需的工作。 您需要創建一個自定義phtml模板

做到這一點(後1.4.1.1最簡單的方法是,在自己的主題,在

template/page/html/header.phtml 

創建一個文件,然後在此文件的末尾添加

<?php echo $this->getChildHtml('how-it-works-button'); ?> 

假設你已經通過佈局xml添加了一個塊到標題塊,這應該會呈現您的模板。

+1

謝謝,我現在明白這一點。正如另一條評論所建議的,我嘗試在該塊中添加output =「toHtml」,但這隻會導致內容出現在頁面的最底部。我現在看到,這是因爲Magento沒有模板來定位html。感謝您的詳細解釋。 –

1

請嘗試此操作

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('how-it-works')->toHtml() ?> 

而這種代碼header.phtml

相關問題