- Ich habe site.com/rims/?vehicleCode=P0000061000
- Wenn ich die Produkte mit dem Code filtern die Standardfilter nicht funktionieren.
In der Installationsfunktion in der Bootstrap.php Datei ich die $ this-> subscribeEvent abonniert ( 'Enlight_Controller_Action_PostDispatchSecure_Frontend_Listing', 'onPostDispatchListing' ); Ereignis. Danach in der onPostDispatchListing Funktion habe ich:Listing Produkte in Shopware auf Basis variabler in URL senden
/** @var \Enlight_Controller_Action $controller */ $controller = $args->getSubject(); $request = $controller->Request(); // defines the default shopware VIEWS directory. $view = $controller->View(); $view->addTemplateDir( __DIR__ . '/Views/responsive' ); $shop = Shopware()->Shop(); $sCategorystart = $shop->getCategory()->getId(); $sCategoryID = $this->getCategoryCurrent($sCategorystart); $oDb = Shopware()->Db(); $EngineCode = $request->getParam('sVehicle'); $query = "SELECT va.`articleID` FROM `s_vehicle_articles` as va INNER JOIN `s_articles_categories` as ac ON ac.articleID=va.articleID WHERE ac.categoryID=" . $sCategoryID; $query .= ($EngineCode) ? " AND va.`VehicleCodeID`= '" . $EngineCode . "'" : " "; $mResults = $oDb->fetchAll($query); $articleModule = Shopware()->Modules()->Articles(); $aProducts = array(); foreach ($mResults as $key => $value) { $article = $articleModule->sGetArticleById($value['articleID'], $sCategoryID); $aProducts[] = $article; } $view->sArticles = $aProducts;
Der Code funktioniert und die Produkte gefiltert werden, aber die Standard-Filter funktionieren nicht, wie Preisfilter etc ..
kann jemand helfen ?
$ criteria = new Kriterien(); $ Kriterien-> addCondition (neue CategoryCondition ([3])); // Meine Bedingung sollte der Code sein, den ich in der URL sende. Wie richte ich es ein? $ context = $ this-> get ('shopware_storefront.context_service') -> getShopContext(); $ service = $ this-> get ('shopware_search.product_number_search'); /** @ var $ result ProductNumberSearchResult */ $ ergebnis = $ service-> search ($ criteria, $ context); $ numbers = []; foreach ($ result-> getProducts() als $ product) { $ numbers [] = $ product-> getNumber(); } –
@DragiPostolovski, sollten Sie Ihre eigenen Kriterien erstellen, die ConditionInterface implementiert. Aber da nicht so einfach, sollten Sie auch Ihr Modell hinzufügen (haben Sie das Modell für 's_vehicle_articles' registriert), um die Abfrage des Pakets zu durchsuchen. Überprüfen Sie meine Antwort mit der 'modifyQuery'-Funktion, diese Art der Implementierung ist sehr einfach. –