Hi, versuche mich gerade an dem SearchBundle. Ich möchte Artikel mit einem bestimmten Attribute aus der Suche ausschließen und auch im Listing nicht anzeigen. Für das Listing das soweit geklappt: Bootstrap.php: public function startDispatch() { Shopware()-\>Events()-\>addListener( 'Shopware\_SearchBundleDBAL\_Collect\_Condition\_Handlers', function() { require\_once \_\_DIR\_\_ . '/Handler/CategoryConditionHandler.php'; return new CategoryConditionHandler(); } ); }
CategoryConditionHandler.php class CategoryConditionHandler implements ConditionHandlerInterface { public function supportsCondition(ConditionInterface $condition) { return ($condition instanceof CategoryCondition); } public function generateCondition( ConditionInterface $condition, QueryBuilder $query, ShopContextInterface $context ) { $query-\>innerJoin( 'product', 's\_articles\_categories\_ro', 'productCategory', 'productCategory.articleID = product.id AND productCategory.categoryID IN (:category)' ); $query-\>setParameter( ':category', $condition-\>getCategoryIds(), Connection::PARAM\_INT\_ARRAY ); $query-\>andWhere('productAttribute.my\_attr IS NULL'); } }
ich bin mir nicht sicher, ob das der richtige Weg ist – funktioniert aber soweit. Jetzt möchte ich gern noch den SearchTermConditionHandler manipulieren bzw. erweitern. Wie stelle ich das an? Ziel ist es bestimmte Artikel im Frontend nicht anzuzeigen aber es soll die Möglichkeit bestehen bleiben diese Artikel in den Warenkorb zulegen. Wäre über tipps dankbar.
Ich verstehe den vorletzten Satz nicht - vermutlich stehe ich gerade aufm Schlauch… Wenn die Artikel nicht im Frontend zu sehen sind, wie bekomme ich diese in den Warenkorb? Sorry, für die dumme Frage.
[quote=„shopomania“]Ich verstehe den vorletzten Satz nicht - vermutlich stehe ich gerade aufm Schlauch… Wenn die Artikel nicht im Frontend zu sehen sind, wie bekomme ich diese in den Warenkorb? Sorry, für die dumme Frage.[/quote] hi, die werden wie andere Artikel auch zb. über /checkout/ajaxAddArticleCart in den Warenkorb gelegt. Sie sollen halt nur nicht im Listing etc. auftauchen. Das sind dann zb. Zubehörartikel o.ä. und werden dann nur an bestimmten Stellen angeboten. Mit dem Code oben, tauchen sie auch in der Suche nicht mehr auf. Ausser, man gibt direkt die Artikelnummer in die Suche ein. Dann wird man direkt auf die Detailseite geleitet. Das ist aber ok. Ich habe diesen Artikeln jetzt ein anderes Template zugewiesen und blende dort die Bestellmöglichkeit etc. einfach aus. Damit ist das Thema für mich erledigt – ausser es hat jemand eine grandiose Idee wie man das besser lösen kann Viele Grüße,
Hallo hbee,
ich bin auf der Suche nach einer Möglichkeit, Artikel einer bestimmten Kategorie bzw. instock=0 aus der Suche auszuschließen.
Hab deinen Lösungsansatz gefunden und gedacht, wenn ich die Zeile:
$query->andWhere(‚productAttribute.my_attr IS NULL‘);
in
$query->andWhere(‚s_articles_details.instock > 0‘);
ändere gehts. Leider funktioniert der Shop dann nicht mehr.
Hab ich was übersehen bzw. können Sie mir weiterhelfen?
Vielen Dank
Hallo hbee,
ich bin auf der Suche nach einer Möglichkeit, Artikel einer bestimmten Kategorie bzw. instock=0 aus der Suche auszuschließen.
Hab deinen Lösungsansatz gefunden und gedacht, wenn ich die Zeile:
$query->andWhere(‚productAttribute.my_attr IS NULL‘);
in
$query->andWhere(‚s_articles_details.instock > 0‘);
ändere gehts. Leider funktioniert der Shop dann nicht mehr.Hab ich was übersehen bzw. können Sie mir weiterhelfen?
Vielen Dank
ich denke ‚s_articles_details‘ ist falsch. versuch es mal mit product.instock