0

在 local.xml 中,我添加了一个名为“category_header”的块,它按预期显示。

<catalog_category_layered>
    ...
    <reference name="root">
        <block type="catalog/category_view" name="category.header" as="category_header" template="catalog/category/view_header.phtml" />
    </reference>
    ...
</catalog_category_layered>

在“特定类别/自定义设计/自定义布局更新”下的管理员中,我尝试使用以下内容将块添加到“category_header”块(时事通讯块只是一个示例):

<reference name="category_header">
    <block type="newsletter/subscribe" name="newsletter" template="newsletter/subscribe.phtml"/>
</reference>

那是行不通的。如果我更改对“内容”的引用(引用名称 =“内容”),它会正常工作并显示在内容块中。

所以我的问题是:我需要做什么才能定位 category_header 块?

4

2 回答 2

0

确保catalog/category/view_header.phtml包含

<?php echo $this->getChildHtml('newsletter') ?>

您始终可以通过以下方式找到子块:

<?php Zend_Debug::dump(array_keys($this->getChild())) ?>
于 2013-05-10T13:55:54.843 回答
0

您正在将块添加到根目录:

<reference name="root"> 
    <!-- ... -->
</reference>

你确定要这样做吗,这是最高级别的。

如果您有意将块添加到根目录,则还必须在基本模板文件中输出块。

例如,如果您使用 1 列布局,则需要修改页面模板以输出您的块:

模板/页面/1column.phtml

<?php echo $this->getChildHtml('category_header') ?>

将内容用作包含时它起作用的原因是内容容器的所有子项都会自动输出,但根容器的子项不是,需要手动添加到您的模板中。

如果您使用任何其他页面布局(2col-left 等),您还需要将输出添加到每个视图文件。

您还需要在 category_header 视图/块中输出任何块:

<?php echo $this->getChildHtml('newsletter_header') // rename.. ?>
于 2013-05-10T10:33:44.827 回答