Referenz before_body_end funktioniert nicht - after_body_start funktioniert?


8

Ich fange an zu glauben, ich hätte mein Mojo verloren ...

Beide Blöcke heißen before_body_endund after_body_startsind vom Typ core/text_list. Allerdings das folgende 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>

Gibt die untergeordneten Blöcke in der Referenz nicht aus. Wenn ich before_body_end gegen tausche after_body_start, werden die Blöcke wie erwartet gerendert

Beide untergeordneten Blöcke erstrecken sich von Mage_Core_Block_Text.

Irgendwelche Ideen warum? Ich glaube ich habe Freitag-Osis ...

Antworten:


23

Das mag dumm klingen, aber ich werde trotzdem fragen: Haben Sie noch einmal überprüft, ob die Hauptvorlagendatei (z. B. 1column.phtml) Ihres Themas funktioniert echo $this->getChildHtml('before_body_end')?

Auf einem Vanilla CE 1.7.0.2 ist dieser Code

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

gibt meinen Testblock dreimal aus.

Gründe, warum es in meinem Kopf auftaucht, after_body_startaber nicht before_body_endvon oben:

  1. Der Block wird in der verwendeten .phtml-Hauptdatei nicht wiedergegeben.
  2. Einige Codes werden before_body_endbeim Erstellen der Seite deaktiviert .
  3. Einige Codes deaktivieren die untergeordneten Elemente beim Erstellen before_body_endder Seite.

Ich gehe davon aus, dass ein modifiziertes page.xml(damit der Block nicht deklariert wird) oder ein Caching-Problem ausgeschlossen werden kann, wenn Sie es sind. ;-);


1
Leider habe ich all diese Dinge überprüft. echo $this->getChildHtml('before_body_end')ist vorhanden ... page.xml ist unverändert. Ich werde weiter graben. Ich weigere mich, mich von diesem schlagen zu lassen! :)
Philwinkle

2
Die Antwort war am Ende ein modifiziertes Unternehmen / default / layout / page.xml Datei , die umbenannt before_body_endzu closure. Es war ein Freitag und aus irgendeinem Grund habe ich nicht an Enterprise / Default gedacht - danke, dass du mein Gedächtnis aufgerüttelt hast!
Philwinkle

1
@Matthias Zeis Ich habe "after_body_start" verwendet und jetzt funktioniert es für mich. Vielen Dank
Sarfaraj Sipai
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.