繁体   English   中英

CMS 页面添加块 magento

[英]CMS page add block magento

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

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

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

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

你需要给你的块一个名字。 这就是 Magento 将如何引用该块。 此外,您的块类型必须有效才能呈现块。 对于默认块尝试使用 type="core/template"

您的新代码应如下所示:

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

关于 type 属性的另一个注意事项,它实际上不是一个目录/文件结构,而是一个映射到 Magento 自动加载器的 URI。 “Core”与 Mage_Core_Block_Core class(在 app/code/core/Mage/Core 目录下)相关,然后斜线后的信息与该目录内的文件夹相关。 所以 type="core/template" 解析为位于 app/code/core/Mage/Core/Block/Template.php 的 class Mage_Core_Block_Core_Template。 type 属性所做的就是告诉 Magento 您需要在块中加载哪些方法。

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

对于产品列表: catalog/product_list

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

对于类别块: catalog/category_view

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

如果你想将变量传递给块,你可以这样做:

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

自 Magento 1.9.2.2 或等效补丁以来,您还需要授予对新块的权限。 您在后端执行此操作:System | 权限 | 积木

即如果你想显示:

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

添加您的块名称“catalog/product_bestseller”并将状态设置为“允许”

我想提供一个替代方案:

上面的答案工作正常,但我个人偏好不在 CMS 页面的内容中插入块,因为客户在尝试使用所见即所得编辑文本和内容时可以(并且已经)删除这一关键行。

您可以在 CMS 页面的Layout > Layout update 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>

这样,客户就不太可能编辑此选项卡!

希望这可以帮助其他人解决这个问题!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM