Добавить блок перед контентом на странице magento


Мне нужно добавить блок сразу после панировочных сухарей на одной из моих страниц, my-page

Я попытался создать блок с именем my-block в администраторе и добавить <?php echo $this->getChildHtml('my-block') ?> в frontend/theme/default/template/page/2columns-left.phtml, и он не показывает содержимое блока my-block.

Я также добавил

<page-name>
    <reference name="root">
        <block type="core/template" name="my-block" as="my-block" before="content" after="breadcrumbs" template="page/html/my-block.phtml"/>
    </reference>
</page-name>

В local.xml файл, но я не уверен, было ли это действительно необходимо.

Я что-то упускаю?

Спасибо

Author: octohedron, 2015-03-24

2 answers

Если my-page является страницей cms, и вы хотите показать свой пользовательский блок только на этой странице cms, то это то, что вам нужно, чтобы включить пользовательский блок прямо под блоком "хлебная крошка".

1. Определите свой пользовательский блок

Файл : app\design\frontend\[package]\[theme]\layout\local.xml

<cms_page_view> <!-- layout update handle -->
    <reference name="root"> <!-- parent block of our custom block -->
        <block type="core/template" name="my.custom.top.block" as="my_custom_top_block" template="custom/template.phtml" /> <!-- definition of custom block -->
    </reference>
</cms_page_view>

Этот фрагмент кода определяет наш блок и включает его в блок root в случае отображения страницы cms. Это означает, что этот блок будет доступен, когда страница cms отображается во внешнем интерфейсе. Вам нужно включить блок внутри root блок, потому что это блок, который содержит все структурные блоки, а breadcrumb блок является структурным блоком. Очевидно, что ваш блок также является структурным блоком.

2. Укажите, Где должен Отображаться Пользовательский блок

Это следующий важный шаг. Определение блока не приведет к автоматическому отображению вашего блока. Вам нужно указать, где он должен появиться. Для этого вам нужно открыть root template и добавить туда приведенный ниже код

Файл : app\design\frontend\[package]\[theme]\template/page/[root-template].phtml

<div class="main">
    <?php echo $this->getChildHtml('breadcrumbs') ?>
    <?php echo $this->getChildHtml('my_custom_top_block') ?>
    <div class="col-main">
        <?php echo $this->getChildHtml('global_messages') ?>
        <?php echo $this->getChildHtml('content') ?>
    </div>
</div>

Здесь [root-template].phtml было бы активный корневой шаблон в вашей теме. Например : 1column.phtml, 2columns-left.phtml и т.д. Было бы хорошо, если бы вы добавили строку <?php echo $this->getChildHtml('my_custom_top_block') ?> чуть ниже breadcrumb вызова в каждом корневом шаблоне, как я показал выше (корневые шаблоны - это файлы phtml, которые доступны в папке template/page).

3. Определите свой пользовательский шаблон блока

Это последний шаг. Продолжайте и создайте пользовательский шаблон блока, который мы указали в нашем макете udpate.

Файл : app\design\frontend\[package]\[theme]\template/custom/template.phtml

<div> UREKKAAAA </div>

Теперь очистите кэш и загрузите снова страница. Вы увидите UREKKAAAA чуть ниже хлебной крошки.

 3
Author: Rajeev K Tomy, 2015-03-24 01:35:58

Виджет или обновление макета

Для верстки можно попробовать такой код

<reference name="top.container">
    <block type="core/template"
                   name="linkcoupon_block"
                   as="linkcoupon_block"
                   template="linkcoupon/static.phtml"
                   output="toHtml"
            />
</reference>
 1
Author: Alex, 2017-10-22 21:25:03