5

Mage_Catalog_Block_Product_List に基づいて、独自の製品リスト ページを作成しました。

アプリ/コード/ローカル/メイジ/カタログ/ブロック/製品/Special.php:

class Mage_Catalog_Block_Product_Special extends Mage_Catalog_Block_Product_List
{      
    /* Original contents */

    /* Here I call addAttributeToFilter on product collection, and then... */
    return $this->_productCollection; 
}

これを CMS ページの中央の列に含めます。

<reference name="content">
    <block type="catalog/product_special" template="catalog/product/list.phtml" />
</reference>

問題は次のとおりです。製品リストは問題なく表示されますが、左側の列に階層化されたナビゲーションが表示されません。

通常のリストとまったく同じテンプレートを使用しているため、これは非常に奇妙です。

私がチェックしたいくつかのこと:

  • Mage_Catalog_Block_Product_Special は単なるプロキシ クラスです。これはうまくいきません。CMS ページでブロック タイプ「catalog/product_list」を使用しても、階層化されたナビゲーションが表示されません。
  • 重要なコア クラスをオーバーライドする拡張機能はありません。
  • また、独自のモジュールを作成して、たとえば「mycatalog」の下にリストしようとしました。これにより、まったく同じ問題が発生します。

これは、CMS ページに製品リストを含めようとしたことに関係しているように感じますが、正確な問題を追跡することはできませんでした.

これに関するヘルプは非常に高く評価されます。

4

4 に答える 4

4

レイヤーをレンダリングするブロックを左側の列に追加する必要があります。

を調べるcatalog.xmlと、catalog_category_layeredノードに次のものが含まれていることがわかります。

<reference name="left">
        <block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml"/>
        ...
</reference>

したがって、それを CMS xml レイアウトの更新に追加すると、CMS ページにレイヤー ブロックが表示されます。

フィルタリング可能な属性の 1 つをクリックしたときに製品リストがフィルタリングされないという問題がある場合、それはおそらく、Layer_View ブロックによってレンダリングされたリンクが、CMS をレンダリングするCategoryControllerではなくにポストバックされると想定しているためです。CmsControllerページ。それが問題である場合とそうでない場合があるため、うまくいかない場合はここに報告してください。

于 2011-03-08T09:21:02.990 に答える
0

レイヤーナビゲーションはカテゴリビューに含まれています。カテゴリで使用されるナビゲーションの部分を含める必要があるため、挿入してみてください

        <reference name="left">
        <block type="catalog/navigation" name="catalog.leftnav" after="currency" template="catalog/navigation/left.phtml"/>
    </reference>

<reference name="content">

よくわかりませんが、うまくいかない場合は、とにかく問題を理解するのに役立つはずです

于 2011-03-07T19:26:03.073 に答える
0

個人的には、すべての製品を含む非表示のカテゴリを作成し、スクリプトを使用してすべての製品を更新し続けます。スクリプトは API で実行できますが、速度は遅いですが、特定のレベルの SKU 数ではタイムリーに機能します。

于 2011-03-04T21:05:07.167 に答える