質問

製品コレクションにフィルターを追加することに関する簡単なチュートリアルを探すのを何日も費やしました。誰かが良いチュートリアルや外植物へのリンクを持っているなら、本当に感謝しています。 Magento Skinとlist.phtmlファイルがこのコードを使用しました。

$products_collection = Mage::getModel( 'catalog/product' )
        ->getCollection()
        ->addAttributeToSelect( '*' )
        ->addCategoryFilter( $_cat )
        ->addOrder( 'position', 'ASC' );
    Mage::getSingleton( 'catalog/product_status' )->addSaleableFilterToCollection( $products_collection );
    Mage::getSingleton( 'catalog/product_visibility' )->addVisibleInCatalogFilterToCollection( $products_collection );
    Mage::getSingleton( 'cataloginventory/stock' )->addInStockFilterToCollection( $products_collection );

この方法でフィルタリングが行われるのを見ていません。そのようにして他にどのような属性を使用できますか?開発者がそのアプローチを使用する理由は何ですか?テーマカテゴリリストにはレビューのセットアップがありません。レビューを出力するコードを見つけましたが、レビューは製品モデルから欠落していると思います。私は試した

Mage::getSingleton( 'review/review' )->addReviewToCollection( $products_collection );

しかし、それは何もしませんでした。

私は魚を手渡される代わりに釣り方を学ぶことにもっと興味があります。

役に立ちましたか?

解決

他にどのような属性を使用できますか(カスタムフィルターを追加するために)?

文字通り どれか. 。開発者またはプラットフォームの気まぐれ/ニーズ次第です。

開発者がそのアプローチを使用する理由は何ですか?

主に、 ドライ. 。フィルター条件を複数のコンテキストで繰り返す必要がある可能性が高く、適切な(SANE)設計は、ロジックをメソッドにカプセル化する必要があることを示しています。

私は試した Mage::getSingleton( 'review/review' )->addReviewToCollection( $products_collection ); しかし、それは何もしませんでした。

Magentoには一見ブードゥーイの魔法がたくさんありますが(通常、イベントアーキテクチャに由来するまたは Varien_Object::__call(), 、これらのコレクションフィルターはどこかに実装する必要があります。以下のように検索することをお勧めします app/code/ 特定の定義を見つけるには:

$ grep -srl 'n addSaleableFilterToCollection'

他のヒント

Magentoのコレクションのさまざまなオプションに関するいくつかの一般的な洞察については、読んでください この記事

一部のコレクションは、モデルを使用してフィルターを追加することで変更できます。基本的に、これらのモデルはMagentoが実行するクエリを変更してコレクションを取得するだけです。次のコードを使用して印刷して特定のコレクションを照会して、何が起こっているのかを確認できます

var_dump((string)$collection->getSelect());

上記で述べたフィルターは、これらのMISCフィルターのすべてをほとんどカバーしています。記述のようなレビューフィルターを作成することは、メインコレクションクエリにレビューテーブルに参加する方法を備えた独自の拡張機能を作成することで実行できます。

しかし、それがアクションパフォーマンスの良いコースであるかどうかはわかりません。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top