Ссылка before_body_end не работает - after_body_start работает?

8

Начинаю думать, что потерял моё моджо ...

Оба блока названы before_body_endи after_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.

Есть идеи почему? Я думаю, что у меня пятница-осис ...

philwinkle
источник

Ответы:

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.
  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_endв closure. Это была пятница, и по какой-то причине я не думал о предприимчивости / дефолте - спасибо за пробежку по памяти!
Philwinkle
1
@Matthias Zeis я использовал "after_body_start", и теперь он работает для меня. Спасибо
Сарфарадж Сипай