Magento从xml块创建CMS块

时间:2014-08-08 04:48:13

标签: magento

<reference name="left">
        <!-- Layered Navigation Block -->
        <block type="catalog/layer_view" name="catalog.leftnav" template="catalog/layer/view.phtml" >
                <action method="setCategoryId"><category_id>2</category_id></action>
        </block>

</reference>

我能够从上面的代码

创建一个CMS块
{{block type="catalog/layer_view" category_id="2" name="catalog.leftnav" template="catalog/layer/view.phtml"}}

如何从下面的XML创建CMS块...它还有更多内容。

<reference name="content">
        <block type="catalog/product_list" name="home" template="catalog/product/list.phtml">

                <!-- Product List View -->
                <action method="setCategoryId"><category_id>2</category_id></action>
                <block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
                        <block type="page/html_pager" name="product_list_toolbar_pager"/>
                </block>
                <action method="setToolbarBlockName"><name>product_list_toolbar</name></action>

        </block>
</reference> 

1 个答案:

答案 0 :(得分:0)

不幸的是,你不能做你需要的 这就是原因。使用{{block}}指令magento在创建块后自动调用toHtml并返回html(渲染块)。
该指令也不支持块内的块。

使用布局文件时,不会自动渲染块。首先解析布局文件,实例化块类,将它们指定为子块或父块,并在最后呈现所有内容。

在你的情况下,你需要这样的东西:

{{block type="catalog/product_list" template="catalog/product/list.phtml" name="home" toolbar_block_name="product_list_toolbar"}}

但这不起作用,因为名称为product_list_toolbar的块尚不存在。

如果您尝试使用以下内容创建它:

{{block type="catalog/product_list_toolbar"....}}

仍然无法工作,因为该块只会被输出(很可能你也会得到一个错误)。
使用{{block}}生成的块不会添加到布局中,因此无法在其他块中引用它们。