sGetArticlesByCategory() liefert falsche Ergebnisse

Ein Listing einer Kategorie soll anders dargestellt werden, dafür hole ich mir die zugehörigen Unterkategorie IDs über die Kategorie ID.

Mit den Unterkategorie IDs will ich mir dann die der Kategorie zugeordneten Artikel holen.

$aArticles[] = Shopware()->Modules()->Articles()->sGetArticlesByCategory($iSubCategoryId);

Allerdings ist dem Aufruf egal ob da nun eine richtige ID der Unterkategorie drin steht oder eine ausgedachte, sie gibt einfach stupide alle Artikel aus.

Habe ich irgendwo einen Denkfehler oder gibt es für die ganze Sache noch einen anderen Weg?

Hi,

die Kategorie-ID ist da nur noch optional - “sGetArticlesByCategory” sollte als "veraltet betrachtet werden und “wrappt” auf das neue System. Intern wird die Suche mit einem sog. “CriteriaRequestHandler” befüllt, der auf Basis des Request-Objekts die Categorie-ID ermittelt. Für dich bedeutet das, dass sGetArticlesByCategory eigentlich nicht genutzt werden sollte.

Für das neue System siehe hier: SearchBundle

$criteria = new Criteria();
$criteria->limit(10);
$criteria->addCondition(new CategoryCondition([3]));
$criteria->addSorting(new PriceSorting());

$context = $this->get('shopware_storefront.context_service')->getShopContext();
$service = $this->get('shopware_search.product_number_search');

/**@var $result ProductNumberSearchResult*/
$result = $service->search($criteria, $context);

$numbers = [];
foreach($result->getProducts() as $product) {
   $numbers[] = $product->getNumber();
}

So kannst du bspw. für bestimmte Kategorien filtern. 

Besten Gruß,

Daniel

1 Like

Müsste in der sGetArticlesByCategory nicht trotzdem noch eine CategoryCondition ergänzt werden, damit die Funktion korrekt auf das neue Bundle wrappt? Damit zumindest Plugins, die diese Funktion noch intern verwenden, weiterhin korrekt funktionieren?

Siehe auch Shopware Issuetracker

Es wäre sicher besser die Plugins umzubauen, die alten Sachen werden wenn ich Daniel da richtig interpretiere nach und nach aus dem Core komplett verschwinden. 

Wenn meine Vermutung richtig liegt, wird bei 5.2 da mit dem Eisenbesen gekehrt. 

Grüße Matthias