0

我正在尝试创建一个自定义页面,我使用空模板为其提供以下 XML。

在我的控制器中,我有

public function indexAction()
{
        $this->loadLayout();
        $this->getLayout()->getBlock('root')->setTemplate('page/empty.phtml');
        $this->renderLayout();
}

在我的布局中,我有

<?xml version="1.0"?>
<layout version="0.1.0">
    <brands_index_index>
        <reference name="content">
            <block type="catalog/layer_view" name="catalog.leftnav" before="brands" template="catalog/layer/view.phtml"/>
            <block type="core/template" name="brands" template="brands/brands.phtml" />
        </reference>
    </brands_index_index>
</layout>

这工作正常,并显示分层导航。

但是,我希望在brands.phtml 模板中显示分层导航。因此,我尝试执行以下操作:

<?xml version="1.0"?>
<layout version="0.1.0">
    <brands_index_index>
        <reference name="content">
            <block type="core/template" name="brands" template="brands/brands.phtml" >
                <block type="catalog/layer_view" name="catalog.leftnav" as="catalog.leftnav" template="catalog/layer/view.phtml"/>
            </block>
        </reference>
    </brands_index_index>
</layout>

但是,当我在brands.phtml 中调用getChildHtml("catalog.leftnav") 时,这似乎不起作用。

如何将分层导航转移到我需要在brands.phtml中调用它的位置?

因此,当我查看“Magento 调试”中的“渲染块”部分时,似乎加载了该块。但是,没有生成 HTML。是否有规定分层导航必须位于左/内容/右块或其他内容中?

谢谢

4

1 回答 1

0

getChildHtml 使用 as 属性而不是 name 属性查找子项。因此,尝试将您的块定义更改为此并相应地更改 getChildHtml 调用:

<block type="catalog/layer_view" name="catalog.leftnav" as="mynav" template="catalog/layer/view.phtml" />
于 2013-04-28T20:52:48.677 回答