A referência before_body_end não funciona - after_body_start funciona?

8

Começando a pensar que perdi meu mojo ...

Os dois blocos nomeados before_body_ende after_body_startsão do tipo core/text_list. No entanto, o seguinte layout 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>

Não gera os blocos filhos na referência. Se eu trocar o before_body_end after_body_start, os blocos serão renderizados conforme o esperado

Os dois blocos filhos se estendem de Mage_Core_Block_Text.

Alguma idéia do porquê? Eu acho que tenho sexta-feira osis ...

philwinkle
fonte

Respostas:

23

Isso pode parecer estúpido, mas perguntarei assim mesmo: você checou duas vezes o arquivo principal do modelo (por exemplo, 1column.phtml) do seu tema echo $this->getChildHtml('before_body_end')?

Em uma baunilha CE 1.7.0.2, esse código

<?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>

gera meu bloco de teste três vezes.

Razões pelas quais ele pode aparecer do alto da minha cabeça, after_body_startmas não dentro dele before_body_end:

  1. O bloco não é ecoado no arquivo .phtml principal usado.
  2. Algum código é desabilitado before_body_enddurante a criação da página.
  3. Algum código desativa os filhos before_body_enddurante a criação da página.

Presumo que seja modificado page.xml(para que o bloco não seja declarado) ou que um problema de cache possa ser descartado, pois é você. ;-)

Matthias Zeis
fonte
11
Infelizmente, verifiquei todas essas coisas. echo $this->getChildHtml('before_body_end')está presente ... page.xml não foi modificado. Eu continuarei cavando. Eu me recuso a deixar este bater em mim! :)
philwinkle
2
A resposta no final foi um arquivo corporativo / padrão / layout / page.xml modificado que foi renomeado before_body_endpara closure. Era sexta-feira e, por algum motivo, não pensei em empresa / padrão - obrigado por despertar minha memória!
philwinkle
11
@ Matthias Zeis Eu usei "after_body_start" e agora está funcionando para mim. Obrigado
Sarfaraj Sipai