1

我有一个自定义模板块(phtml),定义如下:

<block type="catalog/product" name="a.unique.name" template="dir/dir/customlist.phtml"/>

在此块内的 CMS 主页中定义

<reference name="left">

但是,如果我将它移到标题块,它不会出现

<reference name="header">

我在这里想念什么?

** - - 添加 - - -

我按照 D. Sloof 的建议尝试了这个,但它不起作用。(我怀疑更多是由于我的错误行为而不是他的解释。)

我添加了 getChildHtml('customlist'); ?> 到

mytheme\template\page\html\header.phtml  

就在 div "top-col-1" 下

   <div class="wrapper">
     <div class="top-col-1">        
        <?php echo $this->getChildHtml('customlist'); ?> 

“customlist”可以在哪里找到

mytheme/template/dir/dir/customlist.phtml

我究竟做错了什么?

4

2 回答 2

1

知道了...

xml 文件中的块名称a.unique.name

<block type="catalog/product" name="a.unique.name" template="dir/dir/customlist.phtml"/>

必须匹配 mytheme\template\page\html\header.phtml 中调用的内容

<?php echo $this->getChildHtml('a.unique.name'); ?> 
于 2012-09-20T21:49:06.273 回答
0

header块是类型Mage_Page_Block_Html_Header,不会自动渲染子块。您可以查看page/html/header.phtml如何检索子块 html 的模板文件。

你基本上有两个选择:

  • 在标题模板中添加您自己的getChildHtml调用(通过将其复制到您自己的主题中),或者;
  • 将您的块放入一个容器中,该容器将自动呈现子块。该left块的类型Mage_Core_Block_Text_List将执行此操作。块内有一个类似的header块,称为top.containerthat 的类型Mage_Page_Block_Html_Header也可以执行此操作:您可以改为引用此块。
于 2012-09-20T19:06:28.220 回答