Magento2: Übergeordnete Kategorie lädt auch das Produkt der untergeordneten Kategorie

7

Laden Sie in meinem Geschäft die übergeordnete Kategorie auch die Sammlung der untergeordneten Kategorie.
Ich kann es durch Is Anchor auf " Nein " lösen .
Auf diese Weise wird der Filter jedoch nicht in der linken Leiste angezeigt, sodass er nicht die Lösung meines Problems darstellt.
Wie kann ich die Produkte laden, die ich der Kategorie selbst zugeordnet habe?

Ketan Borada
quelle

Antworten:

3

Ich habe dies für Magento 1 gelöst. Die Antwort finden Sie hier .
Sie können einen ähnlichen Ansatz in M2 ausprobieren. Ich bin mir jedoch nicht sicher, ob es funktionieren wird.
Das Ankerflag wird bei der Magento\Catalog\Model\ResourceModel\Product\Collection::addCategoryFilter()Methode berücksichtigt .

Möglicherweise funktioniert es mit einem aroundPlugin, bei dem Sie den Anker auf 0 setzen, dann die ursprüngliche Methode ausführen und auf den vorherigen Wert zurücksetzen.

So etwas (ungetestet):

public function aroundAddCategoryFilter(
   \Magento\Catalog\Model\ResourceModel\Product\Collection $subject,
   callable $proceed,
   \Magento\Catalog\Model\Category $category
) {
    //remember the category anchor flag
    $anchor = $category->getIsAnchor(); 
    //set anchor to 0.
    $category->setIsAnchor(0);
    //execute the original method and remember the result
    $result = $proceed($category);
    //set back the anchor flag on the category
    $category->setIsAnchor($anchor);
    //return what the original method returned;
    return $result;
}

Weitere Informationen zum Erstellen eines Plugins finden Sie in der offiziellen Dokumentation

Marius
quelle
Es filtert die Produkte, nimmt jedoch keine Änderungen am Filter auf der linken Seite vor. Es werden auch alle Attribute der Produkte der untergeordneten Kategorie und die falsche Produktanzahl einschließlich der untergeordneten Kategorie angezeigt.
Ketan Borada
Ich habe Filterprodukte durch Ändern der Funktion _applyProductLimitations () erreicht. Haben Sie eine Idee für Filter?. Trotzdem danke für die Hilfe besser als meine Lösung
Ketan Borada
Danke @Marius ..
Sameer Bhayani