Php 全局使用Magento的Mage_页面中定义的新布局句柄

Php 全局使用Magento的Mage_页面中定义的新布局句柄,php,layout,magento,handle,magento-1.4,Php,Layout,Magento,Handle,Magento 1.4,尊敬的专家们, 我要提到的是,到目前为止,我在使用Magento 1.4.2版的一个项目中所做的一切,但如果我的任何过程似乎有误,请纠正我。我将非常感谢你们大家 我的产品页面有一些非常不同的外观,以至于使用默认的可用页面布局句柄可能不明智。 因此,我考虑使用另一个布局句柄“page\u product\u list”,而不是可用的布局句柄(如“page\u two\u columns\u left”、“page\u two\u columns\u right”)。为了使用它,我在文件“confi

尊敬的专家们,
我要提到的是,到目前为止,我在使用Magento 1.4.2版的一个项目中所做的一切,但如果我的任何过程似乎有误,请纠正我。我将非常感谢你们大家

我的产品页面有一些非常不同的外观,以至于使用默认的可用页面布局句柄可能不明智。
因此,我考虑使用另一个布局句柄“
page\u product\u list
”,而不是可用的布局句柄(如“
page\u two\u columns\u left
”、“
page\u two\u columns\u 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>

产品列表页
第页/product-list.phtml
第页产品清单
所以现在我想加载这个布局句柄,而不是在任何用户试图查看任何类别的详细信息页面时加载“
页面两列”&“
默认”
”布局句柄。
但它不起作用。有人能告诉我怎样才能以Magento的方式实现这个目标吗?

试试这个

<product_list module="page" translate="label">
    ....
    <update handle="page_product_list" />
    ....
</product_list>

....
....
试试这个

<product_list module="page" translate="label">
    ....
    <update handle="page_product_list" />
    ....
</product_list>

....
....

基于现有的布局句柄,我认为除了您的
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_product_view>
    <update handle="page_product_list"/>
    <!-- Existing declarations here -->
</catalog_product_view>

产品列表页
第页/product-list.phtml
1.
catalog.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_product_view>
    <update handle="page_product_list"/>
    <!-- Existing declarations here -->
</catalog_product_view>

基于现有的布局句柄,我认为除了您的
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_product_view>
    <update handle="page_product_list"/>
    <!-- Existing declarations here -->
</catalog_product_view>

产品列表页
第页/product-list.phtml
1.
catalog.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_product_view>
    <update handle="page_product_list"/>
    <!-- Existing declarations here -->
</catalog_product_view>

如果我正确地跟踪了您,您不需要在布局文件中创建任何新句柄,只需重新分配页面模板以用于产品页面。在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>

目录产品视图(任何)
第页/2列-right.phtml
...
在主题的catalog.xml副本或本地的.xml文件中,只需使用产品页面的现有句柄更改要在产品页面上使用的页面模板
。使用如下代码:

<catalog_product_view>
    <reference name="root">
        <action method="setTemplate"><template>page/product-list.phtml</template></action>
    </reference>
...
</catalog_product_view>

第页/product-list.phtml
...

这足以让Magento拉入您的页面模板,而不是它的默认模板之一。不需要在page.xml中另外声明页面模板,除非您希望它也显示在“管理”面板的下拉列表中。

如果我正确地跟踪了您,您不需要在布局文件中创建任何新句柄,只需重新分配页面模板以用于产品页面。在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>

目录产品视图(任何)
第页/2列-right.phtml
...
在主题的catalog.xml副本或本地的.xml文件中,只需使用产品页面的现有句柄更改要在产品页面上使用的页面模板
。使用如下代码:

<catalog_product_view>
    <reference name="root">
        <action method="setTemplate"><template>page/product-list.phtml</template></action>
    </reference>
...
</catalog_product_view>

第页/product-list.phtml
...

这足以让Magento拉入您的页面模板,而不是它的默认模板之一。不需要在Page .xml中另外声明你的页面模板,除非你希望它也出现在管理面板的下拉列表中。

我也尝试过这个解决方案,但是没有发生任何事情,而且默认情况下,MaGuto不考虑任何其他布局句柄,除了预定义的处理之外。(
page\u one\u column
page\u two\u column\u left
page\u two\u column\u right
page\u three\u column
)用于现有页面,就像我一样。:(我以前使用过这个方法创建“弹出”类型,它工作得很好。当(在你的问题中)你说“它不工作”是什么意思?是否有错误消息?没有,没有任何错误消息。但是如果我在“product list.phtml”页面(位于“
../templates/page
”文件夹中)中写入任何文本没有任何显示,这使我明白这个页面不是唯一加载的。如果打开模板提示并查看任何页面设置为 Page SufftTyList,您应该能够准确地看到哪些文件在使用中。我也尝试过这个解决方案,但什么也没有发生,默认情况下MaGeto不考虑任何其他LA。对于现有页面,除了预定义的(
page\u one\u column
page\u two\u column\u left
page\u two\u column\u right
page\u three\u column
)之外的句柄。我就是这样。:(我以前使用过这个方法创建“popup”类型,它工作得很好。什么意思(在您的问题中)您说“它不工作”?是否有错误消息?不,没有任何错误消息。但是如果我在“product list.phtml”页面(位于“
../templates/page
”文件夹中)中写入任何文本,没有显示任何内容,这让我明白,此页面并非仅加载。如果打开模板提示并查看任何设置为
page\u product\u list
的页面,您应该能够准确地看到正在使用的文件。