我是一个前端 Magento 开发人员,已经构建了很多自己的主题,我想更好地理解 Magento 的 XML 块定位...
我通常使用local.xml
文件来操作所有内容,我可以如下定义一个块:
<cms_index_index>
<reference name="root">
<block type="core/template" name="example_block" as="exampleBlock" template="page/html/example-block.phtml"/>
</reference>
</cms_index_index>
这会cms_index_index
在主页(root
<?php echo $this->getChildHtml('exampleBlock') ?>
...到1column.phtml
(或2columns-left
/right.phtml
等3columns.phtml
)。cms_index_index
通过替换适当的页面标签,可以将块放置在任何页面上。
我在核心 XML 文件和教程中看到如下内容:
<reference name="root">
<block type="core/template" name="example_block" before="content" template="page/html/example-block.phtml"/>
</reference>
content
是一个块,它是magento的一般页面结构的一部分,据我了解,before="content"
应该将它放在你期望的地方,而不需要使用getChildHtml('exampleBlock')
,到目前为止这么好......但是,之前/之后似乎几乎没有工作我,而且我经常发现自己求助于 getChildHtml 方法作为备份,这并不总是理想的,并且意味着编辑更多的 .phtml 文件而不是必要的。
我试过了:
<reference name="root">
<block type="core/template" name="example_block" before="content" template="page/html/example-block.phtml"/>
</reference>
什么都没有出现...
<reference name="root">
<block type="core/template" name="example_block" after="header" template="page/html/example-block.phtml"/>
</reference>
仍然没有....我也知道在它的父块内的所有内容之前使用before="-"
或after="-"
放置一些东西。我偶尔会有一些运气,但通常只是感到困惑和沮丧。
我已经到处搜索“magento xml before/after not working”,并开始怀疑是否只是我发生了这种情况……谁能解释我什么时候可以和不能使用 before/after 来定位块?上面的例子有什么问题?
我在 magento 1.7.0.2 (发布时最新可用)
这样做的主要动机是减少我需要编辑的核心 .phtml 文件的数量getChildHtml()
,所以如果有另一种(XML)方法来解决这个问题,我很想知道......