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

发布于 2024-10-12 15:45:28 字数 990 浏览 1 评论 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”&amp;每当任何用户尝试查看任何类别的详细信息页面时,都会使用“默认”布局句柄。
但这不起作用。有人可以指导我如何才能以 Magento 的方式正确实现这一目标吗?

Dear Experts,
I am mentioning what all I have done so far in one of my projects using Magento version 1.4.2, but PLEASE correct me if any of my process seems wrong. I will be more than grateful to you all.

I have got some very different look for my product page, so much so that it may not be wise to use the default available page layout handles.
So I thought of using another layout handle "page_product_list" than the available ones (like "page_two_columns_left", "page_two_columns_right"). For using it, I defined a block of XML in the file "config.xml" (located in the folder "/app/code/local/Mage/Page/etc/"), just like the other layout handle blocks. The code for my custom layout handle is:-

<!-- 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>

So now what I want is to load this layout handle instead of the "page_two_columns_left" & "default" layout handles, whenever any user tries to see the details page of any Category.
But it's not working. Can somebody please guide me as to what can be done in order to achieve this properly in Magento way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

伴我老 2024-10-19 15:45:28

根据现有的布局句柄,我认为除了您的 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>

Based on the existing layout handles I think in addition to your config.xml changes (which only seem to affect the selection box in admin) you should be doing this:

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>
我家小可爱 2024-10-19 15:45:28

试试这个

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

Try this

<product_list module="page" translate="label">
    ....
    <update handle="page_product_list" />
    ....
</product_list>
段念尘 2024-10-19 15:45:28

如果我没有理解您的意思,您无需在布局文件中创建任何新句柄,只需重新分配用于产品页面的页面模板即可。在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>
    <reference name="root">
        <action method="setTemplate"><template>page/product-list.phtml</template></action>
    </reference>
...
</catalog_product_view>

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

If I'm following you correctly, you don't need to create any new handles in the layout files, you just need to re-assign the page template to use for the product page. In catalog.xml you'll see the xml that sets the page template for product pages as:

<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>

In your theme's copy of catalog.xml or in a local.xml file just change the page template to be used on product pages using the existing handle for product pages <catalog_product_view>. Use code like this:

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

That'll be enough to have Magento pull in your page template instead of one of its default templates. No need to declare your page template additionally in page.xml unless you want it to show up in drop-downs in the Admin Panel as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文