Filter ausblenden, der nur einen Wert hat

In filter-panel.html.twig hat Shopware folgenden Code, der die Filter-Optionen auflistet:

[…]

                        {% block component_filter_panel_item_properties %}
                            {# @var properties \Shopware\Core\Framework\DataAbstractionLayer\Search\AggregationResult\Metric\EntityResult #}
                            {% set properties = listing.aggregations.get('properties') %}

                            {% if not properties.entities is empty %}
                                {% for property in properties.entities %}
                                    {% sw_include '@Storefront/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',
                                        propertyName: property.translated.name
                                    } %}
                                {% endfor %}
                            {% endif %}
                        {% endblock %}

[…]

Nun dachte ich mir, dass ich statt dem ‚non… empty‘ check, einfach ‚|length >1‘ oder ‚.count() >1‘ verwende. Aber beides scheint nicht zu funktionieren…

Wie kann ich feststellen, ob 2 oder mehr Elemente vorhanden sind (statt nur empty true/false)?

Wenn ich mich richtig erinnere, werden die Filter per JavaScript neu geladen/gesetzt. Daher könnte deine Änderung keinen Effekt haben.

Eventuell müsstest du das JavaScript ebenfalls anpassen z. B. hier: shopware/src/Storefront/Resources/app/storefront/src/plugin/listing/filter-property-select.plugin.js at 0ef0cc6ecfe48c60cb9c9a3cb8543f79068a6211 · shopware/shopware · GitHub

Hey,

was du vorhast sollte schon so funktionieren.
Probiers mal mit {% if properties.entities.elements|length>1 %}

Grüße

Danke für eure Inputs. Konnte es nun lösen - der Denkfehler war, dass ich eine Ebene zu „früh“ geprüft habe, statt erst auf Element-Ebene:

{% if not properties.entities is empty %}
                                {% for property in properties.entities %}
                                	{% if property.options|length > 1 %}
                                    	{% sw_include '@Storefront/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',
                                        	propertyName: property.translated.name
                                    	} %}
                                    {% endif %}
                                {% endfor %}
                            {% endif %}

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.