2012-04-10 107 views
9

我在CMS->頁面「主頁」文件中。在內容我寫這樣的線是這樣的:CMS頁面添加塊magento

{{block type="myfolder/newfile" template="myfolder/newfile.phtml"}} 

我想渲染內容文件newfile.phtml。我做錯了什麼?

我的新文件下:應用程序\設計\前臺\ DEFAULT \ themeas \模板\ MyFolder文件\ newfile.phtml

回答

21

你需要給你的塊的名稱。這就是Magento將參考該塊的方式。此外,您的塊類型必須有效,才能呈現塊。對於默認塊嘗試使用類型=「核心/模板」

你的新代碼應該是這樣的:

{{block type="core/template" name="my.block.name" template="myfolder/newfile.phtml"}} 

約type屬性另要注意,它並不是一個真正的目錄/文件結構,相反,它是一個使用Magento自動加載器映射的URI。 「核心」涉及Mage_Core_Block_Core類(位於app/code/core/Mage/Core目錄下),然後斜槓後的信息與該目錄內的文件夾相關。因此type =「core/template」解析爲位於app/code/core/Mage/Core/Block/Template.php的這個類Mage_Core_Block_Core_Template。所有的type屬性都在告訴Magento你需要在你的塊中加載哪些方法。

一對夫婦的其他類型的塊,你可以嘗試是:

對於產品列表:目錄/所屬類別

對於文本列表(塊自動呈現出子塊):核心/ text_list

對於分類塊:目錄/ category_view

還有更多,找到新的一個好方法就是看一個塊,它對你正在做的事情做出類似的行爲,並找到它在XML中定義的位置。

+0

它的工作沒有名字,直到版本1.9.2.3 as'''{{block type =「catalog/product_list」category_id =「8」template =「catalog/product/featured.phtml」}}''' – lrkwz 2016-01-27 17:02:50

+2

不要忘記給塊權限,否則不會顯示(magento版本1.9+)system-> permission-> blocks – Mike 2016-07-21 13:50:09

6

如果你想傳遞變量來將擋,你可以這樣做:

{{block type="core/template" name="my.block.name" myvariable="5" template="myfolder/newfile.phtml"}} 
3

我想提供一種替代方案:

以上答案做工精細,但它是我個人的不要在CMS頁面的內容中插入塊,因爲客戶可以(並且已經)在嘗試使用所見即所得編輯文本和內容時刪除了這一重要行。

你可以添加以下的中佈局>佈局更新XML一個CMS頁面的部分:

<reference name="content"> 
    <block after="-" type="your/block_type" name="block.name" template="your/block/template/file.phtml"/> 
    <action method="insert" ifconfig="your/block_type"> 
     <block>block.name</block> 
    </action> 
</reference> 

這樣一來,客戶不太可能編輯這個標籤!

希望這可以幫助其他人解決這個問題!

3

由於Magento 1.9.2.2或等效補丁,您還需要授予新塊的權限。您在後端執行此操作: System |權限|塊

也就是說,如果你想顯示:

{{block type="catalog/product_bestseller" name="krillo.bestseller" template="catalog/product/bestseller.phtml"}} 

添加您的塊名稱「目錄/ product_bestseller」,並設置狀態爲「允許」在我的網站之一