2012-04-10 189 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”,并设置状态为“允许”在我的网站之一

相关问题