Добавление блока макета в нижний колонтитул в Magento - PullRequest
0 голосов
/ 25 августа 2011

Я создал файл .phtml в /app/design/frontend/mytemplate/default/template/page/html/footer.cat.links.phtml

.

, который на данный момент просто содержит 1 html div, с небольшим количеством текста в нем.

Я пытаюсь добавить это в нижний колонтитул, но раньше я не играл с макетом XML.

Итак, я открыл /app/design/frontend/mytemplate/default/layout/page.xml и попытался добавить:

<block type="catalog/navigation" name="footer.cat.links" as="footerCatLinks" template="page/html/footer.cat.links.phtml" />

(Тип «каталог / навигация», так как я собираюсь заставить это работать: http://www.magentocommerce.com/wiki/4_-_themes_and_template_customization/catalog/getting_and_using_categories_and_subcategories)

Я поместил его в блок нижнего колонтитула вот так:

<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml"><my block here></block>

Затем в footer.phtml я попытался вызвать новый блок с помощью:

<?php $this->getChildHtml('footerCatLinks') ?>

Я обновил кеш и т. Д., Но при просмотре в браузере он не добавляет html div в footer.cat.links.phtml.

Я, наконец, подумал, что немного разбираюсь в Magento, но из моего понимания документации это должно сработать! Насколько я не прав?

1 Ответ

6 голосов
/ 04 мая 2012

В макете Magento xml атрибут «тип» блока указывает системе, какой тип блока он должен попытаться загрузить, поэтому указание type="catalog/navigation" указывает Magento, что ему необходимо загрузить Mage_Catalog_Block_Navigation.

Если вы не написали свой собственный класс блоков - который совершенно не нужен в данном случае - вы должны использовать блок типа core/template. Затем вы можете приступить к загрузке списка категорий, используя модель категории (Mage::getModel('catalog/category');) непосредственно в файле .phtml.

Как правило, я хочу использовать одно и то же значение для name="" и as="", поэтому чтобы добавить свой блок в нижний колонтитул для всех страниц, я бы использовал следующий XML в разделе макета <default>:

<reference name="footer">
    <block type="core/template" template="page/html/footer.cat.links.phtml" name="footer_cat_links" as="footer_cat_links" />
</reference>

Обязательно обновите кэш XML макета, если у вас включено кэширование (Система> Управление кэшем).

Обратите внимание, что вам не нужно вызывать $this->getChildHtml('footer_cat_links');, поскольку блок нижнего колонтитула уже должен содержать $this->getChildHtml();, который будет выполнять итерацию по всем дочерним элементам, назначенным блоку нижнего колонтитула.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...