0

Magento の特定のカテゴリのデフォルト テンプレートとブロック クラスをオーバーライドしようとしています。

次のコードはテンプレートのみを変更します。

<reference name="product_list">
  <action method="setTemplate"><template>catalog/product/list-foobar.phtml</template></action>
</reference>

また、デフォルトのブロック クラスを Mage_Catalog_Block_Product_List から Mage_Catalog_Block_Product_List_Foobar に変更する必要があります。

これは、カテゴリの「カスタム レイアウトの更新」フィールドで XML を使用して可能ですか?

私は次のことを試しましたが、それも機能しません。

<reference name="product_list">
  <block type="catalog/product_list_foobar" name="product_list" template="catalog/product/list-foobar.phtml" />
</reference>
4

1 に答える 1

1

厳密に答えた:

<CUSTOM_CATEGORY_DISPLAY>
    <reference name="category.products">
        <action method="unsetChild"><child>product_list</child></action>
        <block type="catalog/product_list_foobar" name="product_list" template="catalog/product/list-foobar.phtml" />
    </reference>
</CUSTOM_CATEGORY_DISPLAY>

次に、<update handle="CUSTOM_CATEGORY_DISPLAY" />これらのディレクティブを適用する各カテゴリのカスタム レイアウト更新 XML フィールドで使用できます。

しかし、階層化されたナビゲーションに関連するモデルとブロックの間には奇妙な/不幸な結合がいくつかあるため、バグのある動作が発生する可能性が非常に高くなります。

于 2013-02-20T18:39:16.617 に答える