Eigene Filter / Attribute

Hallo Zusammen, ich versuche mich gerade in die Erweiterung der Filter einzuarbeiten. Ich habe das Demo Plugin aus den Docs genutzt und versucht umzuschreiben. Ich möchte als Facet Radio Buttons haben. Das Problem ist, dass der übergeben Wert ein Integer Wert sein sollte. Dies habe ich nicht, da ich nur nach Textstrings im Attribut1 filtern möchte. Verwende ich anstatt dem Integer Wert einfach einen String, so klappt es vom Ergebnis. Aber im Filter selber wird nicht der aktive Filter angezeigt. z.B. http://demoshop1.ottscho1.timmeserver.d … sruestung/ Der letzte Filter (attr1) ist es. Man kann auch einfach an die URL ?attr1=test2 hängen. Somit werden nur noch 2 Artikel angezeigt. Oder man wählt test2 bei den Filtern aus. Das Ganze ist abgewandelt von dem ESD Beispiel aus den Docs. Wahrscheinlich sollte man eher mit dem Core Fact ProductAttributeFacet arbeiten. Aber dazu fehlt mir ein Beispiel und ich werde daraus nicht ganz schlau. Hat jemand damit schon gearbeitet und kann helfen? Ziel ist es später mal alle Attributtfelder filterbar anzubieten. Erst mal ohne Multiselekt. Ich bin dankbar für jede Hilfe.

hat sich wohl noch niemand damit beschäftigt. @shopware :shopware: Ein Beispiel für ein Attributfilter wäre klasse :thumbup:

Kannst du das eleganter lösen: Beim Klick auf Filter, damit die Seite nach oben rollt.Sorry, an deinem Thema vorbei. Verstehe noch nicht wozu man das braucht: Filter attr?

Man braucht das, wenn man eigene Filter definieren möchte. Z.B wenn man in den Artikeln das Freitextfeld 1 mit individuellen Werten befühlt hat und diese Filtern möchte. Dafür gibt es ProductAttributeFacet Und dafür Suche ich ein Beispiel.

Hier der jetzige Stand: Filter attribute1 http://demoshop1.ottscho1.timmeserver.d … abenteuer/ wählt man den Eintrag 1, so wird korrekt gefiltert und alles läuft nach Plan. Sobald man einen String Eintrag wählt (einzeln, kein Multiselekt) wird ebenfalls korrekt gefiltert aber die Anzeige passt nicht. Ich glaube das ist ein Bug. Bin mir aber noch nicht sicher. Ticket ist aber mal erstellt.

Ich bin kein Profi, aber ich glaube deine Gebete wurden erhört, oder hat das hier nichts mit deinem Problem zu tun? Siehe Update.md RC2 Removed setField and setMode function in \Shopware\Bundle\SearchBundle\Facet\ProductAttributeFacet. Vielleicht gab es in diesem Zuge für Dich eine Lösung. Ich meine auch gesehen zuhaben, das Dein Ticket als „geklärt“ eingetragen wurde. Und Danke für die Erklärung. Gruß Zwilla

ne, leider nicht. Hier werden nur 2 nicht benötigte set Methoden entfernt. Mein Problem bleibt erhalten. Falls es nicht ein Anwender/Programmier Problem ist.

Hat sich wohl noch niemand damit beschäftigt?

Guten Morgen ottscho, der Fehler lag nicht auf deiner Seite ;). Wir haben das Ticket bereits gefixed und wird in den RC 3 kommen. Hier findest du den Fix auf Github: https://github.com/shopware/shopware/co … 18c041488d Im Anhang findest du auch nochmal ein Beispielplugin welches nach ‘attr1’ Filtert. Mit freundlichen Grüßen, Simon Bäumer :shopware:

2 „Gefällt mir“

Eine Frage noch, es wäre super wenn man bei den Filtern eine Abhängigkeit definieren könnte. Sprich, wenn Filter A auf Wert XY gestellt wird, zeige in Filter B nur noch Werte welche zu Filter A passen. Ist das denkbar?

[quote]Hi Simon, danke für die Info. Funktioniert nun soweit alles. Dein Beispiel Plugin ist ja mit einem MODE_VALUE_LIST_RESULT Will man aber kein Multiselekt und nutzt das RadioFacetResult, so erscheint beim Filter nicht der Value Name sondern das Feld. Siehe Screen. Wäre super wenn das noch gefixt werden könnte. Danke [/quote] Hey ottscho, ich habe für den Bug ein Ticket angelegt, es wird umgesetzt werden allerdings wahrscheinlich nicht mehr zur Final. Du kannst es dir unter http://jira.shopware.de/ anschauen (Ticket-Nr.: SW-11027). [quote=“ottscho”]Eine Frage noch, es wäre super wenn man bei den Filtern eine Abhängigkeit definieren könnte. Sprich, wenn Filter A auf Wert XY gestellt wird, zeige in Filter B nur noch Werte welche zu Filter A passen. Ist das denkbar?[/quote] Das Konzept der Filter ist das sie untereinander uneingeschränkt Kombinierbar sind. So wie du das Vorschlagen hast ist es nicht vorgesehen. Mit freundlichen Grüßen, Simon Bäumer :shopware:

Wäre aber super wenn man die Option einbauen könnte, vielleicht kann ja mal jemand von :shopware: das als Wiki Artikel in der Mittagspause erstellen, oder eine Praktikumsarbeit daraus machen. Anforderung: Nach dem Ändern des Filters und dem Reload der ersten Artikel, müssen sich die Filter auch reloaden und es sollten dann nur noch Filter angezeigt werden, mit denen es möglich ist die Suche weiter einzugrenzen. Problem: Bei einem Shop mit mehreren tausend Artikeln läuft man schnell Gefahr, dass man einen Tot-Filter setzt, der dann zu NULL Suchergebnissen führt. Gruß Zwilla

Hallo, wie Simon oben schon geschrieben hat, ist das Konzept der Filter ein anderes. Also die kann man nicht so ohne weiteres in Abhängigkeit setzen bzw. ausblenden. Das ist nicht mal so “zwischendurch” gemacht, sondern schon ein komplexes Thema. Da wird sich also kurzfristig erstmal nichts ändern. Ob es jeweils Ergebnisse gibt, wir in dem Button angezeigt. Im Zweifel muss man dann einen Filter wieder rausnehmen. Aber das Konzept sieht vor, alle Filter ohne jegliche Abhängigkeiten setzen zu können. So wurde das umgesetzt. Deine Anforderung ist ja genau etwas, was man individuell programmieren kann oder ggf. als Plugin umsetzt: [quote]Nach dem Ändern des Filters und dem Reload der ersten Artikel, müssen sich die Filter auch reloaden und es sollten dann nur noch Filter angezeigt werden, mit denen es möglich ist die Suche weiter einzugrenzen.[/quote] Sebastian

bzgl. den Filtern / Labels tut sich wohl nichts? Das Ticket ist immer noch auf Open und es gibt keine Einstuffung. Es sieht einfach nicht gut aus, wenn die Werte nicht angezeigt werden. Siehen Screen.

Zumal es in Shopware 4 genauso umgesetzt war. Warum man dies in SW5 ändern musste, ist mir ein Rätsel. So muss der Kunde durch Try&Error sich zu seinen Artikeln klicken. Macht absolut keinen Sinn :frowning:

Ich habe 2 Probleme mit den „ProductAttributeCondition“ und kann keinen Fehler finden. 1. Es funktioniert nur der IN Operator. Sobald ich versuche einen anderen zu nutzen, werden immer alle Artikel angezeigt. Es findet also keine Filterung statt. $criteria-\>addCondition( new ProductAttributeCondition( $key, ProductAttributeCondition::OPERATOR\_GTE, $searchParams ) ); 2. Sucht man nach Artikel und verwendet die Filter dann auf dem Such Controller werden komplett sinnfreie Daten angezeigt. Normalerweise sollten dort Breiten wie 155, 160, 180 etc. Kan das evtl. mal jemand testen? :shopware: Danke

Das Problem mit dem Such-Controller habe ich temporär gelöst. Das ist definitv ein Bug. Ticket: http://jira.shopware.de?ticket=SW-11972 Bzgl. dem Operator komme ich nicht weiter. Shopware, könnt ihr da bitte mal nachschauen? :shopware: :thumbup: $criteria-\>addCondition( new ProductAttributeCondition( $key, ProductAttributeCondition::OPERATOR\_GTE, $searchParams ) );

*schieb* Bekomme ich eine Info bzgl. dem Operator? Wäre echt wichtig. Danke :shopware:

Hallo, an dem Suchproblem sind wir schon dran. Deine Probleme mit den Operatoren kann ich nicht ganz nachvollziehen. Folgender Beispielcode funktioniert für mich so wie erwartet. use Enlight\_Controller\_Request\_RequestHttp as Request; use Shopware\Bundle\SearchBundle\Condition\ProductAttributeCondition; use Shopware\Bundle\SearchBundle\Criteria; use Shopware\Bundle\SearchBundle\CriteriaRequestHandlerInterface; use Shopware\Bundle\SearchBundle\Facet\ProductAttributeFacet; use Shopware\Bundle\StoreFrontBundle\Struct\ShopContextInterface; class CriteriaRequestHandler implements CriteriaRequestHandlerInterface { public function handleRequest( Request $request, Criteria $criteria, ShopContextInterface $context ) { if ($request-\>has('minproductAttributesForm')) { $param = $request-\>getParam('minproductAttributesForm'); $criteria-\>addCondition( new ProductAttributeCondition( 'attr1', ProductAttributeCondition::OPERATOR\_GTE, $param ) ); } if ($request-\>has('maxproductAttributesForm')) { $param = $request-\>getParam('maxproductAttributesForm'); $criteria-\>addCondition( new ProductAttributeCondition( 'attr1', ProductAttributeCondition::OPERATOR\_LTE, $param ) ); } $criteria-\>addFacet(new ProductAttributeFacet( 'attr1', ProductAttributeFacet::MODE\_RANGE\_RESULT, 'productAttributesForm', 'RangeSlider' )); } } Viele Grüße, Benjamin Cremer :shopware: