2010-12-07 26 views
1

一個新的塊我昨天Static block on home page in Magento問過這個問題,它回答了一個掛鉤CMS /塊,以現有的塊(內容,在例子)我的問題。建立在Magento

但現在我想知道如何創建自己的塊。

我有這個在我的一個.phtml模板:

<?php echo $this->getChildHtml('home_flash') ?> 

這在我cms.xml文件

<reference name="home_flash"> 
    <block type="cms/block" name="home-page-flash" before="content"> 
    <action method="setBlockId"><block_id>home-page-flash</block_id></action> 
    </block> 
</reference> 

但是,這是行不通的。

我也試圖創建自己的塊類型,(通過複製麪包屑聲明)在page.xml文件:

<block type="page/html_home_block" name="home_block" as="home_block" template="page/template/home_block.phtml"/> 

該文件存在,但不被渲染。

然而,當我引用了塊這樣的:

<block type="page/html_breadcrumbs" name="home_block" as="home_block" template="page/template/home_block.phtml"/> 

它使得我的家鄉塊模板,但原來的CMS /塊不重視它。

希望所有的不同的情況表明正在發生的事情,並強調在我的知識缺口不夠好,有人來回答,我必須某處「註冊」我的新「home_block」型?

+0

這並不是100%清楚你想要完成什麼,這使得理解問題變得困難。你能解釋一下你試圖達到的最終結果是什麼,以及更具體的事情嗎? (即「我的.phtml模板」:哪個phtml模板?) – 2010-12-07 18:31:01

+0

@Alan Storm,感謝評論,我知道這個問題很長,我試圖在最後一行問題中總結它! @clockworkgeek回答了我的問題,事實證明我錯過了關於Magento的MVC位的觀點! – 2010-12-08 11:41:56

回答

5

有許多不同的塊可用,您可以使用,而無需創建自己的。在這種情況下,我認爲core/text_list將是合適的,因爲它不需要模板,並且可以根據需要包含儘可能多的子塊。值得了解

<?xml version="1.0"?> 
<layout version="0.1.0"><!-- All layout files start with this --> 
    <cms_index_index><!-- Index directive is the same as "home" page --> 
     <reference name="root"><!-- For more blocks that can be referenced see "default" directive --> 
      <block type="core/text_list" name="home_flash"> 
       <block type="cms/block" name="home-page-flash"> 
        <action method="setBlockId"><block_id>home-page-flash</block_id></action> 
       </block> 
      </block> 
     </reference> 
    </cms_index_index> 

    <!-- More directives might go here --> 

</layout> 

其它有用的嵌段類型都是core/textcore/template其分別對應於Mage_Core_Block_TextMage_Core_Block_Template。他們使用得最多。
page/html_home_block 你自制塊類型沒有具有匹配名稱的任何PHP類,如果你是真正創建自己的,你將無法使用page前綴,因爲Magento的已經這樣做了。

要創建一個塊,你只需要在佈局文件<block>標籤。
要創建塊類型,您需要編寫一個PHP類,給它一個名稱空間並將其聲明爲模塊的一部分。
要添加到現有的塊是使用<reference>標記的時間。

有在Magento Knowledge Base許多優秀的文章,包括一些上Theming & Design