4

階層化されたナビゲーションを使用して、製品が表示される他のカテゴリに基づいて顧客が製品をフィルタリングできるようにするにはどうすればよいですか?

私は、次のようなカテゴリに分類された製品を扱う衣料品店で働いています。

  • トップス
    • Tシャツ
    • ドレスシャツ
  • ボトムス
    • ジーンズ
    • ショーツ
  • 水着
  • アウターウェア
  • 付属品
    • ベルト
    • ネクタイ

「冬のコレクション」や「インタビューの装い」などの特別なコレクションを追加したいと考えています。これらの特別なカテゴリは、別のルート カテゴリに分類されます (また、属性が特別な値に設定されているため、通常のカテゴリとこれらの特別なカテゴリを区別できます)。これらのすべての製品は、メイン カテゴリにも割り当てられます。

ユーザーが冬のコレクションを閲覧している場合、それらのメイン カテゴリに基づいてフィルタリングできるはずです。ウィンター コレクションとアウター カテゴリにジャケットが存在する場合、フィルターのオプションとしてアウターウェアを表示する必要があります。関連するカテゴリのみが表示されます。たとえば、冬のコレクションには水着がないため、水着のカテゴリは表示されません。

アイデアは、コレクションごとにこれらのメイン カテゴリを複製したくないということです。(カテゴリに基づいて) 衣服の種類が既にわかっているため、コレクションはそれを認識している必要があります。

これはどのように行うことができますか?

4

2 に答える 2

1

私は、ほとんどうまくいくまともな解決策を見つけることができました。他の誰かが同様の質問をした場合に備えて、ここに投稿します。

唯一の欠点は次のとおりです。

  • カテゴリはツリー構造で表示されません (まだ - これに取り組んでいます)
  • クリックしてカテゴリ フィルタを削除すると、通常どおりカテゴリ ツリーがバックアップされますが、これは受け入れられませんでした。私の回避策は、親カテゴリに移動するのではなく、X アイコンでフィルターを完全に削除することでした。

詳細

最初のステップは、「special_type」というカテゴリーに新しい属性を追加することでした。このドロップダウンにより、管理者はカテゴリがコア カテゴリとして機能するか (箇条書きのリストに従って)、特別な「コレクション」として機能するかを選択できます。

次のステップは、データが入力される Mage_Catalog_Model_Layer_Filter_Category::_getItemsData() 内の機能をオーバーライドすることでした$categories$this->getLayer()->getCurrentCategory()->getSpecialType() ==デフォルトの型であれば、元のメソッド ( return parent::_getItemsData()) を呼び出します。さもないと...

これがどの標準カテゴリに表示されるかを決定するカスタム メソッドに渡し$this->getLayer()->getProductCollection()ます。クエリでは次のフィルタを使用します。

  • 非標準カテゴリを除外
  • 現在フィルタリングされているカテゴリを除外する
  • 可能な限り最上位のカテゴリのみを表示する

最後の 2 つは基本的にこの機能を許可します。現在トップスでフィルタリングしている場合は、トップスの子カテゴリのみを表示し、他には何も表示しません。

カスタム メソッドは、私の条件に一致するカテゴリのコレクションを返し、に割り当てられ$categoriesます。メソッドの残りの部分はそのまま残されます。

これが似たような状況の誰かに役立つことを願っています。

于 2012-10-18T15:19:17.483 に答える
1

時間のかかる解決策は、新しい属性を複数選択として作成し、これにすべてのカテゴリを入力することです。次に、すべての製品を調べて、該当するすべての「カテゴリ」を選択する必要があります。

このアプローチの問題点は、フィルターでは、カテゴリがツリー構造ではなくフラットなリストとして表示されることです。たとえば、次のようになります。

カテゴリ フィルタの例

それよりも悪いと思います。フィルターはアルファベット順に自動ソートされると思いますか?

あなたがしたいことをするためのプラグインがあるかもしれません。

于 2012-10-17T15:38:07.340 に答える