CMS页面添加块magento

时间:2012-04-10 14:40:39

标签: magento block

我在CMS->页面“主页”文件中。在内容中我写这样的行:

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

我想在内容文件newfile.phtml中呈现。我做错了什么?

我的新文件位于:app \ design \ frontend \ default \ themeas \ template \ myfolder \ newfile.phtml

4 个答案:

答案 0 :(得分:22)

您需要为您的区块命名。这就是Magento将如何引用该块。此外,块类型必须有效才能生成块。对于默认块,请尝试使用type =“core / template”

您的新代码应如下所示:

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

关于type属性的另一个注释,它实际上不是目录/文件结构,而是一个用Magento自动加载器映射的URI。 “Core”与Mage_Core_Block_Core类(在app / code / core / Mage / Core目录下)有关,然后斜杠后面的信息与该目录内的文件夹有关。因此type =“core / template”解析为此类Mage_Core_Block_Core_Template,它位于app / code / core / Mage / Core / Block / Template.php。所有类型属性都在告诉Magento您需要在块中加载哪些方法。

您可以尝试的其他几种块类型是:

对于产品清单: catalog / product_list

对于文本列表(自动呈现子块的块): core / text_list

对于类别块: catalog / category_view

还有更多,找到新的方法的好方法是查看与您尝试执行类似操作的块,并找到它在XML中定义的位置。

答案 1 :(得分:7)

如果要将变量传递给块,可以执行以下操作:

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

答案 2 :(得分:3)

我想提供另一种选择:

上述答案可以正常使用,但我个人不喜欢在CMS页面的内容中插入块,因为客户端在尝试使用WYSIWYG编辑文本和内容时可以(并且已经)删除了这一关键行。

您可以在布局>中添加以下内容: CMS页面的布局更新XML 部分:

<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 :(得分:3)

自Magento 1.9.2.2或等效补丁以来,您还需要为新块授予权限。你在后端做到这一点: 系统|权限|块

是的,如果你想表现出来:

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

添加您的块名称&#34; catalog / product_bestseller&#34;并将状态设置为&#34;允许&#34;