2015-09-29 5 views
2

Давным время, в 1.9.1 формат файла XML Magento ...Сказка о Magento и его XML Layout

<!-- THIS ADDS A BANNER: --> 
    <reference name="content"> 
     <block type="cms/block" name="blog_banner1"> 
      <action method="setBlockId"><block_id>blog_banner</block_id></action> 
     </block> 
    </reference> 

    <!-- ...BUT NONE OF THESE ADD ANY BANNERS: --> 
    <reference name="above_main"> 
     <block type="cms/block" name="blog_banner2"> 
      <action method="setBlockId"><block_id>blog_banner</block_id></action> 
     </block> 
    </reference> 
    <reference name="breadcrumbs"> 
     <block type="cms/block" name="blog_banner3"> 
      <action method="setBlockId"><block_id>blog_banner</block_id></action> 
     </block> 
    </reference> 
    <reference name="global_messages"> 
     <block type="cms/block" name="blog_banner4"> 
      <action method="setBlockId"><block_id>blog_banner</block_id></action> 
     </block> 
    </reference> 
    <!-- if adding a banner to "above_main" would work that would be nice... :(--> 

... На странице, далеко, далеко (2columns-left.phtml). ..

<body<?php echo $this->getBodyClass()?' class="'.$this->getBodyClass().'"':'' ?>> 
<?php echo $this->getChildHtml('after_body_start') ?> 

<?php echo $this->getChildHtml('right_panel') ?> 
<div class="wrapper"> 
    <?php echo $this->getChildHtml('global_notices') ?> 
    <div class="page container"> 
     <?php echo $this->getChildHtml('header') ?> 
     <div class="container body-wrapper"> 
      <?php echo $this->getChildHtml('global_messages') ?> 
      <?php echo $this->getChildHtml('breadcrumbs') ?> 
      <?php echo $this->getChildHtml('above_main') ?> 
      <div class="row"> 
       <div class="sidebar col-sm-3"><?php echo $this->getChildHtml('left') ?></div> 
       <div class="col-sm-9"> 
        <?php echo $this->getChildHtml('content') ?> 
       </div> 
      </div> 
     </div> 
     <?php echo $this->getChildHtml('footer') ?> 
     <?php echo $this->getChildHtml('global_cookie_notice') ?> 
     <?php echo $this->getChildHtml('before_body_end') ?> 
    </div> 
</div> 
<?php echo $this->getAbsoluteFooter() ?> 
</body> 

тайна тех же правил размещения работающих на content, но не на above_main, breadcrumbs или global_messages.

Может ли кто-нибудь пролить свет на это, чтобы я мог жить долго и счастливо?

ответ

2

Все ваши блоки имеют одно и то же имя, вы не можете иметь более одного элемента блока на одной и той же странице с тем же именем, это будет игнорировать дубликаты. Измените название на

name="blog_banner_1" 
name="blog_banner_2" 

и т. Д., И сила сильная.

Кроме того, убедитесь, что вы определили блок above_main в своем page.xml. В блоке 'default' на странице .xml найдите;

<block type="core/text_list" name="right" as="right" translate="label"> 
      <label>Right Column</label> 
     </block> 

и сразу после этого добавить это;

<block type="core/text_list" name="above_main" as="above_main"/> 

Теперь вы создали ссылку на страницу выше_main, поэтому, надеюсь, вы сможете добавить свой блок к ней.

Причина вы не смогли добавить ссылку «хлебные крошки» ясно, когда вы смотрите на page.xml тоже -

<block type="core/text_list" name="breadcrumbs.container" as="breadcrumbsContainer" translate="label"> 
      <label>Breadcrumbs</label> 
      <block type="page/html_breadcrumbs" name="breadcrumbs"/> 
     </block> 

Только блоки типа «ядро/text_list» Окажу детей при вызове в качестве блока ссылка - поэтому вся ссылка = «бла» в вашем пользовательском XML должна быть сделана для ссылки на содержащий блок типа core/text_list - в редакторе breadcrumb exlaple это должно быть;

<reference name="breadcrumbs.container"> 
<block type="cms/block" name="blog_banner2"> 
     <action method="setBlockId"><block_id>blog_banner</block_id></action> 
    </block> 
</reference> 

Теперь взгляните на global_messages;

<block type="core/messages" name="global_messages" as="global_messages"/> 

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

+0

не только они не работают в сочетании, но они не работают, даже если я удалю/прокомментирую другие правила - обновил мой код, чтобы вы могли видеть, что я имею в виду .... – Jimmery

+0

вы добавили блок above_main в ваш page.xml? – PixieMedia

+0

, может быть, нет? как бы я это сделал? – Jimmery

Смежные вопросы