参考before_body_end不起作用-after_body_start起作用吗?


8

开始认为我失去了魔力...

这两个块均名为before_body_endafter_body_start类型core/text_list。但是,以下布局xml:

<layout>
    <default>
        <reference name="before_body_end">
            <block type="remarketing/ecjs" name="remarketing_ecjs" as="remarketing_ecjs" />
            <block type="remarketing/modal" name="remarketing_modal" as="remarketing_modal" />
        </reference>
    </default>
</layout>

在参考中不输出子块。如果我将before_body_end交换为after_body_start,则块将按预期呈现

两个子块都从Mage_Core_Block_Text扩展。

有什么想法吗?我想我有星期五病...

Answers:


23

这听起来可能很愚蠢,但是我还是要问:您是否仔细检查了主题的主模板文件(例如1column.phtml)echo $this->getChildHtml('before_body_end')

在香草CE 1.7.0.2上,此代码

<?xml version="1.0"?>
<layout version="0.1.0">
    <default>
        <reference name="after_body_start">
            <block type="core/template" name="test1" template="test.phtml" />
        </reference>
        <reference name="before_body_end">
            <block type="core/template" name="test2" template="test.phtml" />
        </reference>
        <reference name="content">
            <block type="core/template" name="test3" template="test.phtml" />
        </reference>
    </default>
</layout>

输出我的测试块三次。

它可能显示在我的头上after_body_start但不在before_body_end我的头上的原因:

  1. 使用的主.phtml文件中未回显Block。
  2. before_body_end在构建页面期间,一些代码未设置。
  3. 一些代码会before_body_end在构建页面期间取消设置的子级。

我假设已修改page.xml(这样就不会声明该块),或者可以排除由于您而导致的缓存问题。;-)


1
不幸的是,我已经检查了所有这些东西。echo $this->getChildHtml('before_body_end')存在... page.xml未修改。我会继续挖掘。我拒绝让这个人打败我!:)
philwinkle

2
最后的答案是修改后的enterprise / default / layout / page.xml文件,并将其重命名before_body_endclosure。这是一个星期五,由于某种原因,我没有想到企业/默认设置-感谢您慢跑!
philwinkle

1
@Matthias Zeis我使用了“ after_body_start”,现在它为我工作。谢谢
Sarfaraj Sipai '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.