我创建了一个自定义模块,该模块为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>
答案 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>