Ссылка на тему Magento между блоком заголовка и topSearch (catelogsearch / form.mini.phtml)

0

Я начинаю изучать, как создать тему Magento. Я начинаю понимать, какие блоки и где найти определенный файл phtml, установив подсказки шаблона и добавить имена блоков в подсказки на "Да". Ниже находится заголовочный блок внутри файла layout/page.xml.

<block type="page/html_header" name="header" as="header">
            <block type="page/template_links" name="top.links" as="topLinks"/>
            <block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
            <block type="core/text_list" name="top.menu" as="topMenu" translate="label">
                <label>Navigation Bar</label>
                <block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml"/>
            </block>
            <block type="page/html_wrapper" name="top.container" as="topContainer" translate="label">
                <label>Page Header</label>
                <action method="setElementClass"><value>top-container</value></action>
            </block>
            <block type="page/html_welcome" name="welcome" as="welcome"/>
</block>

С помощью вышеупомянутого блока XML он загружает файл template/page/html/header.phtml. Ниже приведен код в файле header.phtml.

 <?php echo $this->getChildHtml('topSearch') ?>

С помощью этого метода $this-> getChildHtml ('topSearch') я ожидаю, что он найдет блок topSearch внутри блока заголовка в файле page.xml и загрузит его файл phtml. Но нет блока topSearch, живущего в блоке заголовка внутри page.xml. Дело в том, что он загружает блок topSearch из макета /catelogsearch.xml. Мой вопрос в том, как он знает, что вместо этого нужно загрузить блок topSearch из layout/catelogsearch.xml?

Теги:
themes
magento
header

1 ответ

1

Тот факт, что Magento объединит все файлы макета в один во время выполнения, делает это возможным. Таким образом, на самом деле он не будет искать ссылку topSearch потому что это не обязательно. После завершения слияния topSearch станет дочерним блоком блока page/html_header.

<default> <!--page handle, <default> is used on all pages-->
    <reference name="header"> <!--reference to page/html_header block-->
        <block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml"/>
    </reference>

Рекомендуемое чтение:
Введение в макеты
Magento для разработчиков: Часть 4 - Макеты, блоки и шаблоны Magento

Ещё вопросы

Сообщество Overcoder
Наверх
Меню