Question

J'ai passé des jours à la recherche d'un tutoriel sur l'ajout de filtres à une collection de produits. Si quelqu'un a un lien vers un bon tutoriel ou explantion Je voudrais vraiment l'apprécier. J'ai trouvé une peau Magento et le fichier list.phtml utilise ce code:

$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 );

Je ne l'ai pas vu le filtrage fait avec cette méthode « addSaleableFilterToCollection ». Quels sont les autres attributs peuvent être utilisés de cette façon? Quelles sont les raisons possibles d'un développeur pourrait utiliser cette approche? La liste des catégories de thèmes n'a pas configuré de commentaires. J'ai trouvé le code qui affiche les commentaires mais je pense que les commentaires sont absents du modèle de produit. J'ai essayé

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

mais cela ne fait rien.

Je suis plus intéressé à apprendre à pêcher au lieu d'être remis un poisson.

Était-ce utile?

La solution

Quels sont les autres attributs peuvent être utilisés [pour ajouter des filtres personnalisés]?

Littéralement any . Il est à la fantaisie / besoins du développeur ou plate-forme.

Quelles sont les raisons possibles développeur utiliseraient cette approche?

Principalement, SEC . Il est probable que les conditions de filtrage devront être répétées dans plusieurs contextes, et la conception appropriée (saine) nous dit que la logique doit être encapsulé dans une méthode.

J'ai essayé Mage::getSingleton( 'review/review' )->addReviewToCollection( $products_collection ); mais cela ne fait rien.

Bien qu'il y ait beaucoup de magie apparemment voodoo-y dans Magento (provenant généralement de l'architecture d'événements ou Varien_Object::__call(), ces filtres de collecte doivent être mis en œuvre quelque part. Je recommande à la recherche comme ci-dessous dans app/code/ pour trouver une définition donnée:

$ grep -srl 'n addSaleableFilterToCollection'

Autres conseils

Pour un aperçu général des différentes options pour les collections dans Magento s'il vous plaît lire cet article

Certaines collections peuvent être modifiées en utilisant des modèles pour ajouter des filtres, essentiellement ces modèles sont en train de changer la requête simplement effectuée par Magento pour récupérer la collection. Vous pouvez utiliser le code suivant pour imprimer à la requête d'une certaine collection pour voir ce qui se passe

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

Les filtres que vous avez indiqué ci-dessus assez bien couvert tous ces filtres misc je pense. Création d'un filtre d'examen comme votre description pourrait être fait en écrivant votre propre extension qui a une méthode pour joindre les tables d'examen à la principale requête de collection.

Cependant, je ne suis pas sûr que ce serait un bon cours de l'exécution de l'action sage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top