改变Magento中时事通讯Sidebox的位置

时间:2012-11-21 03:39:16

标签: magento

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

我正在尝试更改侧箱出现在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">

将其移至列表底部。但是,该列实际上位于左侧。任何想法为何有效?

2 个答案:

答案 0 :(得分:1)

全部按sortedChildren条目顺序排列。尝试删除自定义 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() [link]

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

答案 1 :(得分:-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>

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