我想用块名称“ persistent.remember.me”更改模板,但是在同一句柄下有两个具有相同名称的块:

app/design/frontend/base/default/layout/persistent.xml

<checkout_onepage_index>
    <reference name="checkout.onepage.login">
        <action method="setTemplate"><template>persistent/checkout/onepage/login.phtml</template></action>
        <block type="persistent/form_remember" name="persistent.remember.me" template="persistent/remember_me.phtml" />
    </reference>
    <reference name="checkout.onepage.billing">
        <action method="setTemplate"><template>persistent/checkout/onepage/billing.phtml</template></action>
        <block type="persistent/form_remember" name="persistent.remember.me" template="persistent/remember_me.phtml" />
        <block type="core/template" name="persistent.remember.me.tooltip" template="persistent/remember_me_tooltip.phtml" />
    </reference>
</checkout_onepage_index>

我创建了一个Local.xml,其中包含以下内容:

app/design/frontend/mytheme/default/layout/local.xml

<checkout_onepage_index>
    <reference name="persistent.remember.me">
        <action method="setTemplate"><template>mytheme/persistent/remember_me.phtml</template></action>
    </reference>
</checkout_onepage_index>

一切正常;只有最后一个引用的模板(“ checkout.onepage.billing”)才能更新,这正是我想要的,但是我不确定为什么要这样做。我的印象是,块名称应该始终是唯一的。这是Magento中的错误吗?如果我升级Magento,该代码可能会发生什么?

有帮助吗?

解决方案

ERFAN是对HTML输出两次的正确性,一次是“ Checkout.onepage.login”的孩子,并且是“ Cookeout.onepage.billing”的孩子。

因此,有两个儿童块,具有相同的名字。每个都可以具有不同的模板,并且每个模板都被渲染为父母的孩子。

要更改两个父块中的持久块,您需要直接针对父块,例如:

<checkout_onepage_index>
    <reference name="checkout.onepage.login">
            <block type="persistent/form_remember" name="persistent.remember.me" template="my/custom/template.phtml" />
        </reference>
</checkout_onepage_index>

以上只能更改登录块中的模板。

如果您仅针对子块“ persistent.remember.me”,那么Magento似乎只会改变第一个发现的块的发生。 开始投机: 这很可能是在顺序或α出现的情况下出现的,请在“ Checkout.onepage.login”之前按字母顺序出现“ beckout.onepage.billing”,以内部存储该块的任何数组。 .login之后呈现的.billing的事实只是使它看起来只是在改变第二次发生。 :) 结束猜测

其他提示

不,这不是错误。我敢打赌,网站上只有一个街区“ checkout.onepage.billing”和“ checkout.onepage.login”。

因此,只有一个块“ persistent.remember.me”。

许可以下: CC-BY-SA归因
scroll top