La referencia before_body_end no funciona, ¿after_body_start sí?

8

Empezando a pensar que he perdido mi mojo ...

Ambos bloques nombrados before_body_endy after_body_startson de tipo core/text_list. Sin embargo, el siguiente diseño 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>

No genera los bloques secundarios en la referencia. Si cambio el before_body_end por after_body_start, los bloques se procesan como se esperaba

Ambos bloques secundarios se extienden desde Mage_Core_Block_Text.

Alguna idea de por qué? Creo que tengo viernes-osis ...

philwinkle
fuente

Respuestas:

23

Esto puede sonar estúpido, pero preguntaré de todos modos: ¿verificaste dos veces que lo hace el archivo de plantilla principal (por ejemplo, 1column.phtml) de tu tema echo $this->getChildHtml('before_body_end')?

En un CE vainilla 1.7.0.2, este 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>

saca mi bloque de prueba tres veces.

Razones por las que puede aparecer en mi cabeza after_body_startpero no en before_body_endla parte superior

  1. El bloque no se repite en el archivo .phtml principal utilizado.
  2. Algunos códigos se desarman before_body_enddurante la construcción de la página.
  3. Algún código desarma a los hijos de before_body_enddurante la construcción de la página.

Supongo que se modificó page.xml(para que el bloqueo no se declare) o se puede descartar un problema de almacenamiento en caché dado que es usted. ;-)

Matthias Zeis
fuente
1
Lamentablemente, he comprobado todas esas cosas. echo $this->getChildHtml('before_body_end')está presente ... page.xml no está modificado. Seguiré cavando. ¡Me niego a dejar que este me gane! :)
philwinkle
2
La respuesta en el final fue un / page.xml archivo / diseño empresa / default modificado que cambió el nombre before_body_enda closure. Era un viernes y, por alguna razón, no pensé en Enterprise / default, ¡gracias por activar mi memoria!
philwinkle
1
@Matthias Zeis he usado "after_body_start" y ahora está funcionando para mí. Gracias
Sarfaraj Sipai