Calling Developers!
We are reenergizing our code contribution process! Learn More

What are the Slack Archives?

It’s a history of our time together in the Slack Community! There’s a ton of knowledge in here, so feel free to search through the archives for a possible answer to your question.

Because this space is not active, you won’t be able to create a new post or comment here. If you have a question or want to start a discussion about something, head over to our categories and pick one to post in! You can always refer back to a post from Slack Archives if needed; just copy the link to use it as a reference..

Hey :spryker:-folks, I'm trying to increase the number of filter values in the facet dropdown-filter

Options
s.kroll
s.kroll Head of Technology Spryker @ basecom Posts: 118 ✨ - Novice

Hey :spryker:-folks,
I'm trying to increase the number of filter values in the facet dropdown-filters on a default yves category-page. I have for example products with more then 10 different values for some of the attributes, but I always get a maximum of 10 different values per attribute.

I already debugged the situation and know, that the 10 values come directly from ElasticSearch (limit of 10 is applied there) but I'm not sure how to tell it to increase the value. I would have expected taht I can override it in an e.g. SearchConfigExtensionPlugin. But until I had no success so far

Comments

  • s.kroll
    s.kroll Head of Technology Spryker @ basecom Posts: 118 ✨ - Novice
    edited January 2022
    Options

    I'm achieving this via overriding Spryker\Client\ProductSearchConfigStorage\Plugin\Config\ProductSearchConfigExpanderPlugin now, but it still feels not right... 🤔

  • U01LKKBK97T
    U01LKKBK97T Posts: 287 🧑🏻‍🚀 - Cadet
    Options

    You can override e. g. Spryker\Client\SearchElasticsearch\Aggregation\StringFacetAggregation.

    /**
     * @param string $fieldName
     * @param string $nestedFieldName
     *
     * @return \Elastica\Aggregation\AbstractAggregation
     */
    protected function createValueAgg(string $fieldName, string $nestedFieldName): AbstractAggregation
    {
        $aggregation = parent::createValueAgg($fieldName, $nestedFieldName);
    
        if ($aggregation instanceof Terms) {
            $aggregation->setSize(50);
        }
    
        return $aggregation;
    }
    

    The size of 50 can be read from the module's config, once you got it working.

  • s.kroll
    s.kroll Head of Technology Spryker @ basecom Posts: 118 ✨ - Novice
    Options

    Looks like there are many working approaches 😄 Thank you for the hint. Looks a bit more "right" than my previous approach...