Предоставить новые ссылки для статических блоков в макете Magento - PullRequest
0 голосов
/ 13 января 2011

Я хочу отобразить карусель и два баннера вверху каждой страницы контента моего сайта. Я создал пользовательскую ссылку, начиная с блока нижнего колонтитула в page.xml. Вот как это выглядит:

<block type="page/html" name="topcontent" as="topcontent" template="page/html/topcontent.phtml">
    <block type="page/html_wrapper" name="topcontent.container" as="topcontentContainer" translate="label">
        <label>Page Top Content</label>
        <action method="setElementClass"><value>topcontent-container</value></action>
    </block>
    <block type="core/template" name="topcontent.book.carousel" as="topcontentCarousel" template="callouts/book-carousel.phtml"/>
    <block type="core/text_list" name="topcontent.left" as="topcontentLeft" />
    <block type="core/text_list" name="topcontent.right" as="topcontentRight" />
</block>

Затем я создал файл topcontent.phtml, куда я положил

<div class="topcontent-container">
    <div class="topcontent">
      <?php echo $this->getChildHtml('topcontentContainer') ?> 
      <?php echo $this->getChildHtml('topcontentCarousel') ?>
      <?php echo $this->getChildHtml('topcontentLeft') ?>
      <?php echo $this->getChildHtml('topcontentRight') ?>
    </div>
</div>

Моя карусель отображается правильно, но когда я пытаюсь поместить блок в topcontentLeft или topcontentRight, он отображается не все. Я думаю, что я делаю что-то не так с параметром типа блока, но я не могу понять, что: кто-то может мне помочь? Благодарю.

Ответы [ 2 ]

1 голос
/ 13 января 2011

Зависит от того, что нужно отображать в баннере. Если это просто какой-то текст, вы можете использовать текстовый блок:

<block type="core/text" name="topcontent.right" as="topcontentRight">
    <action method="addText"><text>Test text</text></action>
</block>

Если вам нужен блок-заполнитель для отображения содержимого статического блока CMS, то вы правы, cote / text_list является подходящим типом для такого блока. Он берет все вложенные блоки и отрисовывает их один за другим. Следующее, что вам нужно сделать, это поместить заполнитель cms / block, его содержимое может быть добавлено позже из бэкэнда. Все вместе это может выглядеть так:

<block type="core/text_list" name="topcontent.right" as="topcontentRight">
    <block type="cms/block" name="topcontent.right.cms" as="topcontentRightCms">
        <action method="setBlockId"><block_id>topcontent_right_static</block_id></action>
    </block>
</block>

Теперь вы можете создать новый статический блок в административном бэкэнде с идентификатором 'topcontent_right_static', и он будет отображаться там, где вы его выводите.

0 голосов
/ 13 января 2011

Я думаю, что проблема в атрибуте @type для topcontentLeft и topcontentRight

type="core/text_list"  need to be changed to type="core/template"
...