曾几何时,在Magento 1.9.1布局XML文件中......
<!-- 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
。
任何人都可以对此有所了解,以便我能过上幸福的生活吗?
答案 0 :(得分:2)
您的所有块都具有相同的名称,您不能在同一页面上具有多个具有相同名称的块元素,它将忽略重复项。将名称更改为
name="blog_banner_1"
name="blog_banner_2"
等等,力量很大。
另外,请确保在page.xml中定义了above_main块。在&#39;默认&#39; page.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"/>
现在您已经创建了页面引用above_main,所以希望您能够将块添加到它。
您无法添加参考&#39;面包屑的原因&#39;当你查看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>
只有#34; core / text_list&#34;在被称为块引用时将呈现子项 - 所以所有引用=&#34; blah&#34;在你的自定义XML中必须引用core / text_list类型的包含块 - 在breadcrumb exmaple中,它应该是;
<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"/>
这不能用作添加子项的容器引用,因为它永远不会呈现它们。