尊敬的专家,
我提到我到目前为止在使用Magento 1.4.2版本的一个项目中所做的一切,但如果我的任何过程看起来错了,请纠正我。我将非常感谢你们所有人。
我的产品页面有一些非常不同的外观,以至于使用默认的可用页面布局句柄可能不明智。
所以我想到使用另一个布局句柄“page_product_list
”而不是可用的布局句柄(如“page_two_columns_left
”,“page_two_columns_right
”)。为了使用它,我在文件“config.xml
”(位于文件夹“/app/code/local/Mage/Page/etc/
”)中定义了一个XML块,就像其他布局句柄块一样。我的自定义布局句柄的代码是: -
<!-- some other nodes -->
<three_columns module="page" translate="label">
<!-- details of this node -->
</three_columns>
<product_list module="page" translate="label">
<label>Product List Page</label>
<template>page/product-list.phtml</template>
<layout_handle>page_product_list</layout_handle>
</product_list>
所以现在我想要的是加载这个布局句柄而不是“page_two_columns_left
”&amp;每当任何用户试图查看任何类别的详细信息页面时,“default
”布局句柄
但它不起作用。有人可以指导一下为了在Magento方式实现这一目标可以做些什么吗?
答案 0 :(得分:3)
基于现有的布局句柄,我认为除了config.xml
更改(这似乎只影响管理员中的选择框)之外,您应该这样做:
<强> page.xml 强>
<page_product_list translate="label">
<label>Product List Page</label>
<reference name="root">
<action method="setTemplate"><template>page/product-list.phtml</template></action>
<!-- Mark root page block that template is applied -->
<action method="setIsHandle"><applied>1</applied></action>
</reference>
</page_product_list>
<强>的catalog.xml 强>
<catalog_product_view>
<update handle="page_product_list"/>
<!-- Existing declarations here -->
</catalog_product_view>
答案 1 :(得分:1)
试试这个
<product_list module="page" translate="label">
....
<update handle="page_product_list" />
....
</product_list>
答案 2 :(得分:0)
如果我正确地关注您,您不需要在布局文件中创建任何新句柄,只需重新分配用于产品页面的页面模板即可。在catalog.xml中,您将看到将产品页面的页面模板设置为:
的xml<catalog_product_view translate="label">
<label>Catalog Product View (Any)</label>
<!-- Mage_Catalog -->
<reference name="root">
<action method="setTemplate"><template>page/2columns-right.phtml</template></action>
</reference>
...
</catalog_product_view>
在主题的catalog.xml副本或local.xml文件中,只需使用产品页面<catalog_product_view>
的现有句柄更改要在产品页面上使用的页面模板。使用这样的代码:
<catalog_product_view>
<reference name="root">
<action method="setTemplate"><template>page/product-list.phtml</template></action>
</reference>
...
</catalog_product_view>
这足以让Magento拉入你的页面模板而不是其中一个默认模板。除非您希望它显示在管理面板中的下拉列表中,否则无需在page.xml中另外声明您的页面模板。