Magento:是否可以在不编辑catalog.xml的情况下将块添加到类别视图的其他块中

时间:2013-04-13 13:09:49

标签: magento magento-1.7

我创建了一个自定义模块,该模块为magento类别添加了一个属性,并在我的类别页面上显示。

首先,我编辑了category / view.phtml模板文件以直接检索我的属性。工作正常,但由于我必须编辑默认模板文件,因此不是真正的解决方案。

所以我创建了自己的布局.phtml文件,该文件在类别页面上呈现自定义块。只要我使用“内容”作为参考,这就很有效。

    <catalog_category_default>
       <reference name=\"content\">        
         <block type=\"categoryreadmore/readmore\" name=\"slim_readmore\">

事实上,这并不是我需要的。我需要将我的块直接放在类别描述之下!在catelog.xml中,如果在类别视图中找到它。

    <reference name=\"content\">
        <block type=\"catalog/category_view\" name=\"category.products\" template=\"catalog/category/view.phtml\">
            <block type=\"catalog/product_list\" name=\"product_list\" template=\"catalog/product/list.phtml\">

所以我需要的是将我的块放在\'category.products \'块内的\'product_list \'上面。

这是否可以不编辑catalog.xml?我想要一个单包模块,而不必在每次安装模块时编辑默认模板。

提前致谢!


有什么想法吗?

我的假设是,这是不可能的,这将是一个遗憾

我当前的代码

config.xml中:

<frontend>
  <layout>
    <updates>
        <readmore>
            <file>readmore.xml</file>
        </readmore>
    </updates>
  </layout>

readmore.xml

<catalog_category_default>
   <reference name="content">
     <block type="categoryreadmore/readmore" name="slim_readmore" before="product_list" >
        <action method="setTemplate"><template>readmore/readmore.phtml</template></action> 
     </block>
  </reference>
</catalog_category_default>

1 个答案:

答案 0 :(得分:1)

绝对!模块可以定义自己的布局XML文件。在模块etc/config.xml文件中,定义布局文件的名称,该文件可以包含您要进行的更新。将此文件放在app/design/frontend/base/default/layout中。在新块中,您可以添加before参数以指定它将在product_list块之前呈现,如下所示:<block type=\"categoryreadmore/readmore\" name=\"slim_readmore\" before=\"product_list\">。 Magento足够聪明,知道在<{em> product_list块之前渲染这个块。以下是您的模块config.xml中的代码:

<config>
    <frontend>
        <layout>
            <updates>
                <module_identifier>
                    <file>module_layout_file.xml</file>
                </module_identifier>
            </updates>
        </layout>
    </frontend> 
</config>