1

感谢您提前提供任何帮助。

我正在尝试更改边箱在 magento 中出现的顺序。例如:我的购物车、时事通讯、投票、最近浏览的产品。

目前我正在尝试让时事通讯框显示在最后。

在 app/design/frontend/default/MY_TEMPLATE/layout/newsletter.xml

我有以下代码:

    <default>

    <!-- Mage_Newsletter -->
    <reference name="left">
        <block type="newsletter/subscribe" name="newsletter" after="-" template="newsletter/subscribe.phtml" />
    </reference>

</default>

然而,即使在代码中显示了 after="-" 时,时事通讯仍然出现在第 1 位。

我已经刷新了所有缓存,并且每次更改都无济于事时重新索引。

编辑:

改变

<reference name="left">

<reference name="right">

将其移动到列表的底部。但是,该列实际上在左侧。任何想法为什么这有效?

4

2 回答 2

1

这一切都是按照leftsortedChildren条目的顺序。尝试摆脱自定义newsletter.xml,在您的自定义主题中创建一个local.xml文件,并添加以下内容:

<?xml version="1.0"?>
<layout>
    <default>
        <action method="unsetChild" block="left">
            <block>left.newsletter</block>
        </action>
        <action method="insert" block="left">
            <block>left.newsletter</block>
            <sib />
            <after>1</after>
        </action>
    </default>
</layout>

这样做是从排序的子块列表中删除块引用,然后在最后再次添加它。参考。Mage_Core_Block_Abstract::insert()[链接]

block为标签使用了一个未使用但有效的属性,<action />而不是将其包装在<reference />. 我相信效果是一样的。

于 2012-11-21T04:15:28.313 回答
-1

检查左侧/右侧边栏中显示的块名称(在布局 xml 文件中)。你可以找到这样的东西

 <reference name="right">
            <block type="catalog/product_compare_sidebar" after="cart_sidebar" name="catalog.compare.sidebar" template="catalog/product/compare/sidebar.phtml"/>
 </reference>

上面的代码将显示购物车侧边栏,然后比较侧边栏。考虑这是您侧边栏中的最后一个块。如果您想在此块之后发布时事通讯,您必须指定

<reference name="right">
        <block type="newsletter/subscribe" name="newsletter" after="catalog.compare.sidebar" template="newsletter/subscribe.phtml" />
    </reference>

您必须在元素标记之后/之前指定块名称。找到您的左/右侧边栏最后一个块名称,并在您的通讯块中使用该名称。

于 2012-11-21T06:18:32.017 回答