Magento 是什么阻止显示我的布局更新

Magento 是什么阻止显示我的布局更新,magento,Magento,我试图使用我创建的特殊块在我的Magento站点上显示一条简单的消息。我可以轻松地取消块设置并将它们插入主页上的其他位置,但当我尝试在其中一个产品页面上执行相同的操作时,我遇到了麻烦。我已经在app/design/frontend/base/default/layout/packagename/modulename.xml创建了一个文件 包括以下内容: <?xml version="1.0"?> <layout> <default> &

我试图使用我创建的特殊块在我的Magento站点上显示一条简单的消息。我可以轻松地取消块设置并将它们插入主页上的其他位置,但当我尝试在其中一个产品页面上执行相同的操作时,我遇到了麻烦。我已经在app/design/frontend/base/default/layout/packagename/modulename.xml创建了一个文件 包括以下内容:

<?xml version="1.0"?>
<layout>
    <default>
        <reference name="product.info">
            <block type="core/text" name="free_shipping">
                <action method="setText"><text><![CDATA[<div>Free Shipping!</div>]]>            </text></action>
            </block>
        </reference>

        <reference name="header">
            <action method="unsetChild">
                <name>top.search</name>
            </action>
        </reference>

    </default>
</layout>

免费送货!]]>
top.search
在我看来,上面的代码可能会从产品页面中删除搜索栏,并在产品信息部分添加一个块,上面写着“免费送货!”,但当我加载页面时,没有任何更改。我已经尝试过使用“remove”来更改页面上的一些块,而且效果很好,因此文件肯定会加载到layout.xml中。我还尝试在local.xml文件中进行更改,结果相同。除此之外,我有点不知所措,无法让它正常工作

编辑:为了提供更多关于这个问题的信息,如果我要用以下内容替换我的更改

<reference name="root">
    <action method="unsetChild">
        <name>header</name>
    </action>
</reference>

标题

收割台已成功卸下。所以我想现在的问题是,为什么在“根”块上使用而不是在“头”上使用时调用unset child会像预期的那样工作?

我认为您需要更具体地使用布局处理程序,您将其设置为,这意味着所有页面,我建议您通过

<?xml version="1.0"?>
<layout>
    <catalog_product_view>
        <reference name="product.info">
            <block type="core/text" name="free_shipping">
                <action method="setText"><text><![CDATA[<div>Free Shipping!</div>]]>                </text></action>
            </block>
        </reference>

        <reference name="product.info">
            <block name="header">
                <action method="unsetChild">
                    <name>top.search</name>
                </action>
            </block>
        </reference>
    </catalog_product_view>
</layout>

免费送货!]]>
top.search

问候。

首先,千万不要把你的东西放在基本/默认文件夹中

关于你的问题。如果您这样尝试会怎么样:

<reference name="header">
    <action method="unsetChild">
        <name>top.search</name>
    </action>
</reference>

top.search
要回答您的另一个问题:

收割台已成功卸下。所以我想现在的问题是,为什么在“根”块上使用而不是在“头”块上使用时,调用unset子项会像预期的那样工作


这不是因为它在根块上,而是您应该在
部分中使用unsetChild。

谢谢您的想法,但我只是尝试了一下,它并没有改变输出。此外,在使用默认句柄时,如果要删除两个引用标记并将其替换为类似“”的内容,则会成功删除块,因此,这让我觉得使用的句柄不是问题。我的印象是,在基本/默认文件夹中创建布局或模板文件没有问题,只有在编辑现有文件时才会遇到问题,所以我很想听听你为什么这么说。但就问题而言,我在写问题时犯了一个错误,我使用的代码与您建议的完全相同。谢谢你指出这一点!我编辑了这个问题,以反映我实际使用的代码。我想让你看这篇文章:谢谢你的帮助和链接Mike。是的,我想最好创建一个新主题并将布局文件放在那里。但我真正关心的是为什么在我提到的两种情况下“unset child”的行为不同。我能想到的另一件事是,您的unset child现在可能被设置了
顶部的XML覆盖。search
。你能试试同样的,但现在使用不同的软件包和主题吗?因此,使用local.xml中的
/default
来修改布局,而不是base/default