示例:在catalogsearch.xml中,我可以找到:
<reference name="footer_links">
<action method="addLink" translate="label title" module="catalogsearch" ifconfig="catalog/seo/search_terms">
<label>Search Terms</label>
<url helper="catalogsearch/getSearchTermUrl" />
<title>Search Terms</title>
</action>
<action method="addLink" translate="label title" module="catalogsearch">
<label>Advanced Search</label>
<url helper="catalogsearch/getAdvancedSearchUrl" />
<title>Advanced Search</title>
</action>
</reference>
很清楚。在“footer_links”块中,代码将添加2个URL,搜索和高级搜索链接。现在,我的问题是:为什么我应该通过xml布局文件添加这两个链接,而不是直接在与页脚相关的phtml模板中添加它们?!
我认为,如果它是相同的,那么选择一种方法而不是另一种方法是没有方便的,我会编辑phtml文件。
答案 0 :(得分:0)
Magento中有很多块,它们可以作为从其他布局文件添加到子块中的“容器”。它们通常在page.xml
布局文件中定义,与footer_links
块一样:
<block type="page/template_links" name="footer_links" as="footer_links" template="page/template/links.phtml"/>
如您所见,这会实例化块类Mage_Page_Block_Template_Links
,其中包含布局文件在addLink()
标记中调用的<action>
块方法。
定义这些类型的块可以让您在设置要在多个布局文件中添加的内容时具有很强的通用性。这不仅将块声明分隔成与特定模块相关的不同布局文件,它还可以依赖于主题,允许您在主题之间完全更改布局。
另外,如果你不再使用块,这基本上是你在某种程度上通过只在模板文件中工作,取决于该块的构造方式以及它具有的子节点,你可能会失去一些缓存块HTML的好处。
因此直接在模板文件中工作有3个主要缺点:
我知道,对于Magento而言,在模板文件中工作相当新,在这样的情况下看起来似乎是一个很好的解决方案,但随着您发现更多有关Magento布局及其运行方式的信息,您将开始看到巨大的好处在框架设置的标准内工作 - 在这种情况下使用布局文件。如果您了解拥有顶级容器块的好处,例如content
,header
和footer
,那么footer_links
块的优势就完全相同。