Frage

Ich habe Tage damit verbracht, nach einem einfachen Tutorial zum Hinzufügen von Filtern zu einer Produktsammlung zu suchen. Wenn jemand einen Link zu einem guten Tutorial oder einer Erklärung hat, würde ich es wirklich zu schätzen wissen. Ich habe eine Magento -Haut gefunden und die Datei list.phtml verwendet diesen 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 );

Ich habe keine Filterung mit dieser Methode "AddSalableFilterToCollection" gesehen. Welche anderen Attribute können auf diese Weise verwendet werden? Was sind die möglichen Gründe, warum ein Entwickler diesen Ansatz verwenden würde? Die Kategorie -Liste der Themen enthält keine Bewertungen eingerichtet. Ich habe den Code gefunden, der die Bewertungen ausgibt, aber ich denke, die Bewertungen fehlen im Produktmodell. Ich habe es versucht

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

Aber das hat nichts getan.

Ich bin mehr daran interessiert zu lernen, wie man fischt, anstatt einen Fisch zu erhalten.

War es hilfreich?

Lösung

Welche anderen Attribute können verwendet werden [um benutzerdefinierte Filter hinzuzufügen]?

Buchstäblich irgendein. Es liegt an der Laune/Bedürfnisse des Entwicklers oder der Plattform.

Was sind die möglichen Gründe, warum ein Entwickler diesen Ansatz verwenden würde?

In erster Linie, TROCKEN. Es ist wahrscheinlich, dass die Filterbedingungen in mehreren Kontexten wiederholt werden müssten, und das ordnungsgemäße (vernünftige) Design sagt uns, dass die Logik in einer Methode eingekapselt werden sollte.

Ich habe es versucht Mage::getSingleton( 'review/review' )->addReviewToCollection( $products_collection ); Aber das hat nichts getan.

Während es in Magento eine Menge scheinbar voodoo-y-Magie gibt (normalerweise stammt aus der Event-Architektur oder Varien_Object::__call(), Diese Sammelfilter müssen irgendwo implementiert werden. Ich empfehle, wie unten in der Suche nach in der Suche nach app/code/ Um eine bestimmte Definition zu finden:

$ grep -srl 'n addSaleableFilterToCollection'

Andere Tipps

Für einige allgemeine Einblicke in die verschiedenen Optionen für Sammlungen in Magento bitte lesen Dieser Artikel

Einige Sammlungen können durch Verwendung von Modellen zum Hinzufügen von Filtern geändert werden. Grundsätzlich ändern diese Modelle nur die von Magento durchgeführte Abfrage, um die Sammlung abzurufen. Sie können den folgenden Code verwenden, um eine bestimmte Sammlung abzufragen, um zu sehen, was passiert

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

Die Filter, die Sie oben angegeben haben, decken all diese Fehlfilter so ziemlich ab, denke ich. Das Erstellen eines Überprüfungsfilters wie Ihre Beschreibung kann durch das Schreiben Ihrer eigenen Erweiterung durchgeführt werden, die eine Methode zum Verbinden der Überprüfungstabellen an die Hauptabfrage für die Sammlung enthält.

Ich bin mir jedoch nicht sicher, ob dies eine gute Voraussetzung für die Leistung sein würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top