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 を追加します。さて、私の質問は、フッターに関連する phtml テンプレート内に直接追加するのではなく、xml レイアウト ファイルを介してこれら 2 つのリンクを追加する必要があるのはなぜですか?!

それが同じであれば、一方の方法を他方の方法よりも優先するのは便利ではないと思います.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、 、headerなどのトップ レベルのコンテナー ブロックを使用する利点を理解していればfooter、まったく同じ利点がfooter_linksブロックにも当てはまります。

于 2013-04-19T10:08:13.687 に答える