# SearchResult um category Filter erweitern

**URL:** <https://forum.shopware.com/t/searchresult-um-category-filter-erweitern/62804>\
**Category:** Programmierung\
**Created:** [5. November 2019 um 10:40 UTC](https://forum.shopware.com/t/searchresult-um-category-filter-erweitern/62804 "2019-11-05T10:40:05Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![DenKon26](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@DenKon26](https://forum.shopware.com/u/DenKon26)\
**Post date:** [5. November 2019 um 10:40 UTC](https://forum.shopware.com/t/searchresult-um-category-filter-erweitern/62804/1 "2019-11-05T10:40:05Z")

</div>

Hallo,

Der aus Shopware \< 5.6 bekannte Kategoriefilter wurde ja auch in Shopware 6 entfernt.  
Ich versuche gerade über ein Plugin das SearchResult um eine category Aggregation und einen category Filter zu erweitern.

Ziel ist, dass der search Controller einen zusätzlichen Parameter ‚category‘ akzeptiert, um die Suchergebnisse nach Kategorien filtern zu können.

Beispiel: **[www.myshop.de/search?search=test&category=c22c5acc170e40f7826c012d4ae08452](http://www.myshop.de/search?search=test&category=c22c5acc170e40f7826c012d4ae08452)**

Der Parameter **category** soll entsprechend die ID der Kategorie enthalten.

&nbsp;

Bisher versuche ich leider erfolglos folgendes:

```
/**
 * @return array
 */
public static function getSubscribedEvents(): array
{
    return [
        ProductSearchCriteriaEvent::class => 'onTest',
        ProductSearchResultEvent::class => 'onTest2'
    ];
}

public function onTest(ProductListingCriteriaEvent $event)
{
    $categoryId = $event->getRequest()->get('category');

    if ($categoryId) {
        $event->getCriteria()->addAggregation(
            new TermsAggregation('category', 'product.categories.id')
        );
    }
}

public function onTest2(ProductListingResultEvent $event)
{
    $event->getResult()->addCurrentFilter('category', $event->getRequest()->get('category'));

}

```

&nbsp;

Die Aggregation und der Filter werden hinzugefügt, die Suchergebnisse werden aber nicht nach der Category gefiltert.

Jemand eine Idee @Shopware?

&nbsp;

Viele Grüße

Dennis

&nbsp;

---

<div class="post-metadata">

**Author:** ![Krispin](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/krispin/32/12849_2.png) [@Krispin](https://forum.shopware.com/u/Krispin)\
**Post date:** [5. November 2019 um 13:10 UTC](https://forum.shopware.com/t/searchresult-um-category-filter-erweitern/62804/2 "2019-11-05T13:10:08Z")

</div>

Hi Dennis,

wenn du nur auf die Kategorie filtern möchtest, sollte das eigentlich genügen:

```
/**
     * @return array
     */
    public static function getSubscribedEvents(): array
    {
        return [
            ProductSearchCriteriaEvent::class => 'onTest',
        ];
    }

    public function onTest(ProductListingCriteriaEvent $event)
    {
        $categoryId = $event->getRequest()->get('category');

        if ($categoryId) {
            $event->getCriteria()->addFilter(new EqualsFilter('product.categories.id', $categoryId));
        }
    }

```

Gruß

Krispin

---

<div class="post-metadata">

**Author:** ![DenKon26](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@DenKon26](https://forum.shopware.com/u/DenKon26)\
**Post date:** [5. November 2019 um 14:01 UTC](https://forum.shopware.com/t/searchresult-um-category-filter-erweitern/62804/3 "2019-11-05T14:01:06Z")

</div>

So einfach kann es gehen!

Damit funktioniert es.

Danke!

---

<div class="post-metadata">

**Author:** ![DenKon26](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@DenKon26](https://forum.shopware.com/u/DenKon26)\
**Post date:** [5. November 2019 um 14:16 UTC](https://forum.shopware.com/t/searchresult-um-category-filter-erweitern/62804/4 "2019-11-05T14:16:06Z")

</div>

> [@Krispin schrieb:](https://forum.shopware.com/profile/29825/Krispin "Krispin")
> 
> Hi Dennis,
> 
> wenn du nur auf die Kategorie filtern möchtest, sollte das eigentlich genügen:
> 
> /\*\*
> 
> - @return array  
> \*/  
> public static function getSubscribedEvents(): array  
> {  
> return [  
> ProductSearchCriteriaEvent::class =\> ‚onTest‘,  
> ];  
> }
> 
> public function onTest(ProductListingCriteriaEvent $event)  
> {  
> $categoryId = $event-\>getRequest()-\>get(‚category‘);
> 
> if ($categoryId) {  
> $event-\>getCriteria()-\>addFilter(new EqualsFilter(‚product.categories.id‘, $categoryId));  
> }  
> }
> 
> Gruß
> 
> Krispin

&nbsp;

Eine kurze Frage noch: Welchen Unterschied macht es, ob ich addFilter oder addPostFilter verwende? Beides scheint zu funktionieren und der Shopware Standard verwendet bspw. für die manufacturerId ein addPostFilter

---

<div class="post-metadata">

**Author:** ![Krispin](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/krispin/32/12849_2.png) [@Krispin](https://forum.shopware.com/u/Krispin)\
**Post date:** [5. November 2019 um 14:31 UTC](https://forum.shopware.com/t/searchresult-um-category-filter-erweitern/62804/5 "2019-11-05T14:31:00Z")

</div>

Hi Dennis,

dazu gibt es einen&nbsp;Artikel in der Dokumentation, der das gut erklärt:&nbsp;[https://docs.shopware.com/en/shopware-platform-dev-en/internals/core/data-abstraction-layer/search#post-filter](https://docs.shopware.com/en/shopware-platform-dev-en/internals/core/data-abstraction-layer/search#post-filter)

Gruß

Krispin

---

<div class="post-metadata">

**Author:** ![DenKon26](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@DenKon26](https://forum.shopware.com/u/DenKon26)\
**Post date:** [6. November 2019 um 11:20 UTC](https://forum.shopware.com/t/searchresult-um-category-filter-erweitern/62804/6 "2019-11-06T11:20:31Z")

</div>

Vielen Dank!
