Referensi before_body_end tidak berfungsi - after_body_start tidak?

8

Mulai berpikir aku kehilangan mojo ...

Kedua blok dinamai before_body_enddan after_body_startbertipe core/text_list. Namun, tata letak xml berikut:

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

Tidak menampilkan blok anak dalam referensi. Jika saya menukar before_body_end untuk after_body_start, blok membuat seperti yang diharapkan

Kedua blok anak diperluas dari Mage_Core_Block_Text.

Ada ide mengapa? Saya pikir saya punya Friday-osis ...

Philwinkle
sumber

Jawaban:

23

Ini mungkin terdengar bodoh, tetapi saya tetap akan bertanya: apakah Anda memeriksa ulang apakah file templat utama (mis. 1column.phtml) dari tema Anda tidak echo $this->getChildHtml('before_body_end')?

Pada vanilla CE 1.7.0.2, kode ini

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

mengeluarkan blok pengujian saya tiga kali.

Alasan mengapa itu bisa muncul after_body_starttetapi tidak before_body_enddari bagian atas kepala saya:

  1. Blok tidak digema dalam file .phtml utama yang digunakan.
  2. Beberapa kode tidak terpasang before_body_endselama membangun halaman.
  3. Beberapa kode membuka kunci anak-anak before_body_endselama membangun halaman.

Saya menganggap dimodifikasi page.xml(sehingga blok tidak dideklarasikan) atau masalah caching dapat dikesampingkan mengingat itu Anda. ;-)

Matthias Zeis
sumber
1
Sayangnya saya sudah memeriksa semua hal itu. echo $this->getChildHtml('before_body_end')hadir ... page.xml tidak dimodifikasi. Saya akan terus menggali. Saya menolak untuk membiarkan yang satu ini mengalahkan saya! :)
philwinkle
2
Jawaban pada akhirnya adalah file perusahaan / default / layout / page.xml yang dimodifikasi yang diubah namanya before_body_endmenjadi closure. Itu adalah hari Jumat dan untuk beberapa alasan saya tidak memikirkan perusahaan / default - terima kasih untuk jogging memori saya!
philwinkle
1
@Matthias Zeis saya telah menggunakan "after_body_start" dan sekarang bekerja untuk saya. Terima kasih
Sarfaraj Sipai