在Magento 1.9中,我想在主页上添加一个自定义块,但没有任何反应。我有这些文件:
应用程序/设计/前端/ [mytheme的] /default/layout/local.xml
<?xml version="1.0" encoding="UTF-8"?>
<layout>
<default>
<reference name="root">
<block type="core/text_list" name="customblock" as="customblock" translate="label">
<label>Custom Block</label>
</block>
</reference>
<reference name="customblockreference">
<block type="core/template" name="customblock" template="customblock.phtml" />
</reference>
</default>
</layout>
在homepage.phtml中
<?php echo $this->getChildHtml('customblock') ?>
在 应用程序/设计/前端/ [mytheme的] /default/template/customblock.phtml
<h1>test</h1>
我在哪里做错了?
答案 0 :(得分:2)
我假设customblock
是您用于主页的根模板,因此请澄清是否不是这样。
我认为问题是homepage.phtml
阻止core/text_list
会在您的根模板customblock.phtml
中呈现,但您尚未向该块添加任何内容。 core/text_list
只是一个容器,它会渲染添加到其中的子块。
您似乎可能尝试将<reference name="root">
<block type="core/text_list" name="customblock" translate="label">
<label>Custom Block</label>
<block type="core/template" name="customblock-child" template="customblock.phtml"/>
</block>
</reference>
添加到新core/text_list
,如果是这样的话,它应该是这样的:
core/text_list
这将直接将子模板块添加到<reference name="customblock">
<block type="core/template" name="customblock-child" template="customblock.phtml"/>
</reference>
,因为您只是在同一个文件中定义了这两个模块。但是,如果您需要从其他位置向{{1}}添加新块,则可以这样执行:
{{1}}
答案 1 :(得分:1)
我想加入梦幻般的答案。如果您在XML文件中调用它。您只需要引用HomePage CMS页面。您可以使用主页<cms_index_index>
这样做。
<!-- Homepage -->
<cms_index_index>
<reference name="root">
<block type="core/text_list" name="customblock" translate="label">
<label>Custom Block</label>
<block type="core/template" name="customblock-child" template="customblock.phtml"/>
</block>
</reference>
</cms_index_index>
答案 2 :(得分:0)
您应该在app / etc / modules上定义您的模块,如果您创建的模块应该在admin site(web)配置&gt;中看到提前,并检查模块是否已激活
<?xml version="1.0"?>
<config>
<modules>
<your_module> <!-- Name of Module -->
<active>true</active> <!-- This says if the module is active or not -->
<codePool>local</codePool> <!-- This says the location of the module i.e inside the local folder. It can also be community folder. -->
</your_module>
</modules>
请记住,您自己的实现应该位于本地代码池上,核心代码池应该位于magento dev上。当然你可以扩展本地的功能
答案 3 :(得分:0)
我的解决方案
我从文件替换:
app/design/frontend/[mytheme]/default/layout/local.xml
这样:
<block type="core/text_list" name="customblock" as="customblock" translate="label">
<label>Custom Block</label>
</block>
为:
<block type="core/text_list" name="customblockreference" translate="label">
<label>Custom Block</label>
</block>
所以,现在是:
<?xml version="1.0" encoding="UTF-8"?>
<layout>
<default>
<reference name="root">
<block type="core/text_list" name="customblockreference" translate="label">
<label>Custom Block</label>
</block>
</reference>
<reference name="customblockreference">
<block type="core/template" name="customblock" template="customblock.phtml" />
</reference>
</default>
页面homepage.phtml中的<?php echo $this->getChildHtml('customblock') ?>
变为<?php echo $this->getChildHtml('customblockreference') ?>