0

亲爱的专家,
我提到了到目前为止我在使用 Magento 1.4.2 版的一个项目中所做的一切,但如果我的任何过程看起来有问题,请纠正我。我会非常感谢你们所有人。

我的产品页面有一些非常不同的外观,以至于使用默认的可用页面布局句柄可能不明智。
所以我想使用另一个布局句柄“ page_product_list”而不是可用的(如“ page_two_columns_left”,“ page_two_columns_right”)。config.xml为了使用它,我在文件“ ”(位于文件夹“ ”)中定义了一个 XML 块/app/code/local/Mage/Page/etc/,就像其他布局句柄块一样。我的自定义布局句柄的代码是:-

<!-- 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”&“ default”布局句柄,每当任何用户试图查看任何类别的详细信息页面时。
但它不起作用。有人可以指导我如何以Magento的方式正确实现这一目标吗?

4

3 回答 3

3

根据现有的布局句柄,我认为除了您的config.xml更改(似乎只影响管理员中的选择框)之外,您还应该这样做:

页面.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>

目录.xml

<catalog_product_view>
    <update handle="page_product_list"/>
    <!-- Existing declarations here -->
</catalog_product_view>
于 2011-01-18T13:15:25.597 回答
1

尝试这个

<product_list module="page" translate="label">
    ....
    <update handle="page_product_list" />
    ....
</product_list>
于 2011-01-18T11:27:28.847 回答
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 中另外声明您的页面模板,除非您希望它也显示在管理面板的下拉列表中。

于 2011-01-23T22:09:25.640 回答