Filter für Custom Fields

Ich bin gerade dabei einen Shopware 6 Shop mit eigenem Theme zu bauen, für einen Kunden der aktuell Shopware 4 nutzt. Mit dem Umweg über Shopware 5 konnte ich alle Produkte in Shopware 6 migrieren. Jedoch würde ich gerne für ein migriertes Freitextfeld einen Filter anlegen. Dazu finde ich leider keine Möglichkeit. Zusätzlich möchte ich z.B. den Filter “Hersteller” entfernen, da dieser keine Relevanz hat. Wie könnte ich diese zwei Punkte technisch umsetzen?

Dynamische Produktgruppen erstellen und allen Produkten die jeweilige Eigenschaft zuweisen möchte ich unbedingt vermeiden. Dafür ist die Anzahl der Produkte zu hoch. In den Developer Guidelines für Shopware 6 konnte ich leider keinen Lösungsansatz finden.

Filter werden für Katalog --> Eigenschaften zur Verfügung gestellt nicht für Custom Fields.

Du kannst dann in deinem Theme filter-panel.html.twig überschreiben:

{% sw_extends ‘@parent/storefront/component/listing/filter-panel.html.twig’ %}

 

{% block component_filter_panel %}

    {{parent()}}

{% endblock %}

{% block component_filter_panel_item_properties %}

    {# @var listing \Shopware\Core\Framework\DataAbstractionLayer\Search\EntitySearchResult #}

{#    {{ dump(listing.aggregations.get(‘properties’)) }}#}

    {% if listing.aggregations.get(‘properties’) %}

        {% set properties = listing.aggregations.get(‘properties’) %}

        {% for property in properties.entities %}

            {%  if property.name == “Geschlecht” %}

                {% sw_include ‘@parent/storefront/component/listing/filter/filter-property-select.html.twig’ with {

                    elements: property.options,

                    sidebar: sidebar,

                    name: ‘properties’,

                    displayName: property.translated.name,

                    displayType: property.displayType,

                    pluginSelector: ‘filter-property-select’

                } %}

            {%  endif %}

        {% endfor %}

        {% for property in properties.entities %}

            {%  if property.name == “Sortiment” %}

                {% sw_include ‘@parent/storefront/component/listing/filter/filter-property-select.html.twig’ with {

                    elements: property.options,

                    sidebar: sidebar,

                    name: ‘properties’,

                    displayName: property.translated.name,

                    displayType: property.displayType,

                    pluginSelector: ‘filter-property-select’

                } %}

            {%  endif %}

        {% endfor %}

        {% for property in properties.entities %}

            {%  if property.name == “Marke” %}

                {% sw_include ‘@parent/storefront/component/listing/filter/filter-property-select.html.twig’ with {

                    elements: property.options,

                    sidebar: sidebar,

                    name: ‘properties’,

                    displayName: property.translated.name,

                    displayType: property.displayType,

                    pluginSelector: ‘filter-property-select’

                } %}

            {%  endif %}

        {% endfor %}

        {% for property in properties.entities %}

            {%  if property.name == “Material” %}

                {% sw_include ‘@parent/storefront/component/listing/filter/filter-property-select.html.twig’ with {

                    elements: property.options,

                    sidebar: sidebar,

                    name: ‘properties’,

                    displayName: property.translated.name,

                    displayType: property.displayType,

                    pluginSelector: ‘filter-property-select’

                } %}

            {%  endif %}

        {% endfor %}

    {% endif %}

{% endblock %}

{% block component_filter_panel_item_manufacturer %}{% endblock %}

{% block component_filter_panel_item_price %}{% endblock %}

{% block component_filter_panel_item_rating %}{% endblock %}

{% block component_filter_panel_item_shipping_free %}{% endblock %}

 

1 Like