0

示例:在 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 文件。

4

1 回答 1

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,那么该块也具有完全相同的好处。headerfooterfooter_links

于 2013-04-19T10:08:13.687 回答