我正在尝试在产品视图(仅限),产品详细信息页面中将模板块添加到我的页脚块。我在catalog.xml布局文件中尝试了以下内容,但没有运气:
<catalog_product_view translate="label">
...
<reference name="footer">
<block type="core/template" name="uniqueName" template="catalog/product/mytemplate.phtml" />
</reference>
</catalog_product_view>
和
<catalog_product_view translate="label">
...
<reference name="footer">
<block type="core/template" name="uniqueName">
<action method="setTemplate"><template>catalog/product/mytemplate.phtml</template></action>
</block>
</reference>
</catalog_product_view>
我能够以同样的方式content
使用后一种方法将模板块放入<reference name="content">
块中,所以我不明白为什么这不起作用。好像我没有正确引用页脚..我在page.xml文件中看到创建的页脚添加为<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">
。有人可以帮我解决这个问题吗?非常感谢!
答案 0 :(得分:1)
您需要确保您尝试添加块的块模板(在我的情况下为页脚块)调用您在布局xml中添加的子块。
footer.phtml:
<?php echo $this->getChildHtml('uniqueName'); ?>
答案 1 :(得分:1)
在page.xml
中,查看实例化content
块对象的布局更新xml片段
<block type="core/text_list" name="content" as="content" translate="label">
content
阻止是core/text_list
阻止。 core/text_list
块自动呈现其子块(即它们是文本块列表的包含块)。 core/text_list
别名解析为Mage_Core_Block_Text_List
,请查看此类呈现方法,了解为何将内容添加到内容块中。
现在,看一下实例化页脚块的布局更新XML片段。
<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">
脚块不文本列表块。这是一个page/html_footer
块,它是一个模板块。您可以通过查看page/html_footer
块继承自
class Mage_Page_Block_Html_Footer extends Mage_Core_Block_Template
模板块不会自动呈现其所有子块。相反,在块的模板中,您必须通过调用
显式呈现子项echo $this->getChildHtml('block_name');
所以当你说
时<reference name="footer">
<block type="core/template" name="uniqueName" template="catalog/product/mytemplate.phtml" />
</reference>
你告诉Magento将一个名为uniqueName
的块作为footer
块的子块插入。但是,为了渲染块,页脚的模板必须调用
$this->getChildHtml('uniqueName')