Magento:通过类别自定义布局更新来定位自定义块

时间:2013-05-10 10:25:38

标签: xml magento

在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>

这不起作用。如果我将引用更改为“content”(引用名称=“content”),它就可以正常运行并显示在内容块中。

所以我的问题是:为了能够定位category_header块,我需要做些什么?

2 个答案:

答案 0 :(得分: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.. ?>

答案 1 :(得分:0)

确保 catalog / category / view_header.phtml 包含

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

您始终可以找到子块:

<?php Zend_Debug::dump(array_keys($this->getChild())) ?>