使用Magento的Mage_Page中定义的全局布局句柄

时间:2011-01-18 03:07:55

标签: php layout magento handle magento-1.4

尊敬的专家,
我提到我到目前为止在使用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方式实现这一目标可以做些什么吗?

3 个答案:

答案 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中另外声明您的页面模板。