Я считаю, что вы не можете вывести блок, не имея его в показанном шаблоне.Так что если вы делаете свое расширение поверх создания своего блока, вам нужно вызвать его в шаблоне, где вы хотите.К сожалению, это означает, что кто-то может добавить ваше расширение на свой веб-сайт, и если он создал свою собственную копию файла шаблона, куда добавляется ваш блок, потому что он хотел изменить его в своей теме, то ваш блок там не будет отображаться.Им придется самим выяснить, что вашему модулю нужна модификация шаблона, и самим поместить модификацию в свой собственный шаблон.
Блок может сам выводиться без вызова в шаблоне, если вы добавите output="toHtml"
атрибут, но, как указали некоторые другие, это приведет к визуализации блока после тега </html>
.Это нормально, потому что output="toHtml"
- это то, что заставляет работать корневой блок.Корневой блок не может быть включен в шаблон, потому что у него нет родителя, поэтому он использует атрибут output="toHtml"
и заставляет его выходить.Это работает, потому что, когда Magento отображает свой макет (создает HTML страницы), он вызывает метод getOutput () класса Mage_Core_Model_Layout, и этот метод действительно просто получает все блоки, которые имеют выходной параметр, и вытаскивает их на странице 1 на 1Обычно у вас должно быть только 2 таких блока, root и «core_profiler».(да, это означает, что профилировщик будет отображаться после закрывающего тега HTML).