Добавить ссылку на catalog.topnav в magento через обновление макета - PullRequest
1 голос
/ 06 августа 2011

Можно ли добавить ссылку на навигацию по каталогу в magento через обновление макета - почти так же, как вы можете использовать метод addLink для верхних ссылок и ссылок нижнего колонтитула и т. Д.

1 Ответ

2 голосов
/ 07 августа 2011

Запись макета для catalog.topnav:

<block type="catalog/navigation" name="catalog.topnav" template="catalog/navigation/top.phtml"/>

Это означает, что мы используем класс блока Mage_Catalog_Block_Navigation (возможно) и используем файл шаблона catalog/navigation/top.phtml.

В файле шаблона мы видим, что рендеринг меню выполняется с помощью метода renderCategoriesMenuHtml().

Если мы посмотрим на реализацию этого метода в app/code/core/Mage/Catalog/Block/Navigation.php, то увидим, что этозаполняется циклом по активным категориям магазина.

Итак, из коробки вы не можете добавить этот файл через обновления макета.


Как вы говорите, естьуже класс блока, который поддерживает добавление ссылок через XML с именем page/template_links.Я рекомендую изменить XML на что-то вроде:

<block type="catalog/navigation" name="catalog.topnav" template="catalog/navigation/top.phtml">
    <block type="page/template_links" name="catalog.topnav.links" as="additional_links">
        <action method="addLink">
                <label>Our Boutiques</label>
                <url>boutiques</url>
                <title>Our Boutiques</title>
                <prepare>true</prepare>
                <urlParams helper="core/url/getHomeUrl"/>
                <position>1</position>
                <liParams/>
        </action>
    </block>
</block>

Затем измените файл шаблона на что-то вроде:

<?php $_menu = $this->getLayout()->createBlock('catalog/navigation')->renderCategoriesMenuHtml(0,'level-top') ?>
<?php if($_menu): ?>
    <div class="nav-container">
        <ul id="nav">
            <?php echo $_menu ?>
        </ul>
        <?php echo $this->getChildHtml('additional_links') ?>
    </div>
<?php endif ?>

В блоке page/template_links используется page/template/links.phtmlшаблон по умолчанию, который включает в себя обертку <ul>.Если вы хотите включить ссылки в <ul>, который уже есть в шаблоне catalog/navigation/top.phtml, вы можете установить другой шаблон в блоке page/template_link, используя атрибут template="", и создать свой собственный шаблон ссылок без <ul>.

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