有没有办法使用local.xml覆盖或重新添加通过它的xml布局删除的内容?
我制作了一个主题,全部基于一个页面布局,2columns-left。但是很多页面(例如站点地图)都设置为使用1列布局。例如,在catalog.xml中,我们有:
<catalog_seo_sitemap translate="label">
<label>Catalog Seo Sitemap (Common)</label>
<remove name="right"/>
<remove name="left"/>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
<reference name="content">
<block type="page/template_container" name="seo.sitemap.container" template="catalog/seo/sitemap/container.phtml">
<block type="page/template_links" name="seo.sitemap.links" as="links" template="page/template/links.phtml"/>
<block type="page/html_pager" name="seo.sitemap.pager.top" as="pager_top" template="page/html/pager.phtml"/>
<block type="page/html_pager" name="seo.sitemap.pager.bottom" as="pager_bottom" template="page/html/pager.phtml"/>
</block>
</reference>
</catalog_seo_sitemap>
在我的local.xml中,我可以通过添加:
覆盖要使用的根模板<catalog_seo_sitemap>
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
</reference>
</catalog_seo_sitemap>
所以它现在以2列左侧布局显示站点地图。但左栏中没有任何内容,因为&lt;删除name =“left”/&gt; 已将其删除。我讨厌我必须覆盖整个catalog.xml只是为了删除它,因为这是一个痛苦,然后当他们更新到新版本时,我需要更新所有这些额外的布局文件。
那么,有没有办法使用我的local.xml来解决这个问题?我认为对于默认的Magento主题,他们应该将所有设置都设置为使用3列布局,因为这样你可以随意删除任何你不需要的东西,但默认情况下都是这样,所以所有更改都可以在local.xml文件。
答案 0 :(得分:14)
开箱即用,无法取消先前调用<remove />
删除的布局块。 “
但是,布局系统中有足够的事件可以让您自己实现。而对于“你自己”,我的意思是我created an experimental extension将<unremove />
标记添加到XML Layout系统的语法中。
答案 1 :(得分:5)
这已经asked before但未达成任何结论。您可以在local.xml中创建替换块,但不能保证在本地更改之后
<catalog_seo_sitemap>
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
<block type="core/text_list" name="left" as="left" translate="label">
<label>Left Column</label>
</block> <!-- Copied from page.xml -->
<block type="core/text_list" name="right" as="right" translate="label">
<label>Right Column</label>
</block> <!-- Copied from page.xml -->
</reference>
</catalog_seo_sitemap>