Magento:模板文件和布局XML文件之间的关系

时间:2011-09-19 23:57:57

标签: layout magento

我看到callouts模板(frontend \ my_package \ default \ template \ callouts中的文件)没有相应的布局XML文件(frontend \ my_package \ default \ layout)。所以,我想如果我在frontend \ my_package \ default \ layout \ callouts.xml中有一个空白的布局XML文件,这将禁用Magento首页上的callout块。但是,它不起作用。

结帐模板确实有一个checkout.xml布局文件,因此将其设为空白文件会从我正在查看的页面中删除checkout out块。对于checkout块的情况,checkout.xml是否会覆盖从活动catalog.xml调用的内容?我不会从catalog.xml中删除相应的行,但空白的checkout.xml文件将禁用此块,无论如何。

我知道删除catalog.xml中任何块的相应行都会删除/不会在网页上加载我想要的内容,但我想知道为什么我“覆盖”标注的尝试不起作用。 TIA!

注意:我已禁用缓存。

2 个答案:

答案 0 :(得分:5)

简短版本:所有这些XML文件都合并为一个巨大的XML文件。然后,在每个请求期间,选择某些顶级标签内的XML(< default>,< catalog_category_index>等;其标签称为句柄),并将其合并到较小的XML文件中。较小的XML文件中留下的节点是一组用于创建某些块的指令。每个(好的,大多数)块都有一个phtml模板文件。当你向local.xml添加内容时,你会说“除了正常的东西,还要做这些额外的东西”。当您替换整个文件(例如catalog.xml)时,您会说“我们的文件”,忽略您通常所做的事情。

如果您对长版本阅读No Frills Magento Layout感兴趣,请在Magento布局系统上使用我的DRM免费PDF。

答案 1 :(得分:0)

“覆盖”标注的一个解决方案是:

/app/design/frontend/base/default/layout/local.xml

<layout version="0.1.0">
    <default>
        <remove name="left.permanent.callout" />
        <remove name="right.permanent.callout" />
    </default>
</layout>

注意:艾伦的答案涵盖了你问题中的其他一切。