Erweiterte attributbasierte Suchmöglichkeit

Ich hatte ja schon erwähnt, dass wir im Rahmen von Projekten die [B]attributbasierte Suche [/B]des OXID-Shops stark erweitert haben.

Diese hat gegenüber den Standardmöglichkeiten von OXID eine ganze Reihe von Verbesserungenn:

[ol]
[li]Es werden auch die Produkte in [B]Unterkategorien [/B]der aktiven Kategorie berücksichtigt. (OXID berücksichtigt hier standardmäßig nur die aktive Kategorie.)[/li][li][B]Alle [/B]gewünschten Optionen können vor Start der Suche angewählt werden. (OXID erlaubt hier standardmäßig nur, eine Option nach der anderen auszuwählen.)[/li][li]Auch nach einer Attributauswahl werden wieder [B]alle [/B]Attribut-Optionen zur Auswahl angeboten. (OXID zeigt hier standardmäßig nur noch die [B]ausgewählten [/B]Optionen an! Um eine neue Option zu wählen, muss man deshalb dort überflüssiger Weise und umständlich erst mal die Option “Alle” auswählen.)[/li][li]Mehrere Attribute werden bei der Auswahl so verknüpft, dass nur noch [B]die[/B] Produkte ermittelt werden, die [B]alle gewählten Kriterien[/B] enthalten. (OXID verwendet hier standardmäßig eine “ODER”-Verknüpfung, was [B]alle [/B]Produkte mit [B]irgendeinem [/B]der angegebenen Attribute liefert…)[/li][li]Es werden noch [B]Hersteller und Preisgruppen [/B]als zusätzliche Auswahloptionen angeboten.[/li][/ol]
Hersteller und Preisgruppen werden dabei [B]automatisch [/B]aufgrund der in den beteiligten Kategorien vorhandenen Produkte ermittelt, und müssen [B]nicht [/B]händisch den Produkten zugeordnet werden!

(Es werden also [B]nicht [/B]alle im Shop definierten Hersteller, sondern nur die [B]produktrelevanten [/B]Hersteller dieser Produktgruppe; und [B]nicht [/B]festgelegte Preisgruppen, sondern [B]dynamische Preisgruppen[/B], basierend auf den Preisen der beteiligten Produkte angezeigt).

Der erste Kunde hat diese Erweiterung jetzt in den aktiven Einsatz übernommen.

http://www.heimhifi.com

Im Shop oben links ist eine Grafik “Einkaufsberater” zu sehen.

Ein Klick darauf führt weiter zu einer Anzeige der Produktgruppe, für die diese Auswahl möglich ist.

Nach einem Klick auf die gewünschte Produktgruppe erscheint dann die Auswahlmaske für die attributbasierte Suche.

So kann der Besucher sehr zielgenau die Produkte auswählen, die die von ihm gewünschten Eigenschaften haben.

Unser Kunde wird im Laufe der Zeit sicher noch weitere Produktgruppen in den “Finder” einbinden, aber dazu müssen ja erst mal alle Attribute und Zuordnungen für Kategorien und Produkte definiert werden, was einfach viel Zeit kostet, und eine Menge Arbeit ist…

[B]P.S.:[/B]

Nachtrag zur Attribut-Auswahl (Punkt 4. der obigen Aufzählung)

Die von OXID hierbei standardmäßig verwendete “ODER”-Verknüpfung mehrerer Attributwerte ist m.E. ziemlich falsch…

Denn wenn ich z.B bei Schuhen die Optionen “[B]Größe[/B]: 38” und “[B]Farbe[/B]: schwarz” auswähle, erwarte ich, eine Liste aller schwarzen Schuhe in Größe 38 zu sehen (“UND”-Verknüpfung aller Attribute).

Und nicht eine Liste aller Schuhe der Größe 38 (unabhängig von der Farbe) und aller Schuhe der Farbe schwarz (unabhängig von der Größe), was die verwendete “ODER”-Verknüpfung ja liefert.

Mein ursprünglicher (naiver) Ansatz, bei der Produkt-Auswahl das bei der Attribut-Bedingung verwendete “OR” einfach durch ein “AND” zu ersetzen, hat sich übrigens als nicht machbar herausgestellt, da muss man doch ein wesentlich komplexeres SQL-Konstrukt verwenden…

Der Grund dafür liegt in der Struktur der Attributverwaltung:

Die Zuordnung der Attribute zu den Artikeln erfolgt in der Tabelle “[B]oxobject2attribute[/B]”, in der es für jede Kombination von Attribut/Produkt [B]einen [/B]Eintrag gibt.

Daraus kann man durch eine einfache “OR”-Vernüpfung der Atrribute alle Attribut/Produkt-Kombinationen ermitteln, die wenigstens eines der verknüpften Attribute enthalten (so wie OXID das derzeit macht)…

Die einfache “AND”-Verknüpfung [B]kann [/B]aber gar kein Ergebnis liefern, da es [B]keinen [/B]einzelnen Eintrag in der Tabelle gibt, für den Attribut1 den Wert 1 [B]und [/B]Attribut2 den Wert 2 usw. hat.

Da bekommt man [B]immer [/B]eine leere Ergebnismenge.

Ich sage schon immer, das die Attribute eine absolut unterschätze Funktion ist, die leider sträfflichst vernachlässigt wird von vielen.

Theoratisch sollte es damit sogar möglich sein, den Shop auf eine komplette Attribut-Navi unzustellen, also keine Kateogrien, sondern nur noch Attribute, was aber einen imensen Eingriff an der Stelle erfordert. Zum Teil wurde dies ja bereits umgesetzt von NFQ,

Deinen Ansatz finde ich übrigens echt genial, das einzige was mich daran noch stört ist, das man teil kein Ergebniss engezeigt bekommen, wenn man bewusst schwachfug auswählt. Hier wäre es sicher intersant, auf Ajax Basis das ganze noch zu erweitern, was aber die Sache dann natürlich wieder langsamer macht.

Aber der Gedanke ist echt super und die Umsetzung auch gelungen so wie da gemacht ist.

[QUOTE=nolegend;25t606]Deinen Ansatz finde ich übrigens echt genial, das einzige was mich daran noch stört ist, das man teil kein Ergebniss engezeigt bekommen, wenn man bewusst schwachfug auswählt. Hier wäre es sicher intersant, auf Ajax Basis das ganze noch zu erweitern, was aber die Sache dann natürlich wieder langsamer macht.

Aber der Gedanke ist echt super und die Umsetzung auch gelungen so wie da gemacht ist.[/QUOTE]
Danke für die Blumen…

Nun, der Gedanke ist ja, durch Attributauswahl aus allen Produkten diejenigen auszuwählen, die meinen Kriterien entsprechen.

Und wenn es kein Produkt gibt, das [B]alle [/B]meine Kriterien erfüllt, ist das ja auch eine sinnvolle und wichtige Information…

Welche Alternative hättest Du für diesen Fall im Auge?

Wie schon gesagt, es ist schwierig das umzusetzten aber interesant wäre, eine Liveabfrage im Hintergrund, die diejenigen Checkboxen auf disable stellt, bei denen dann das Ergebniss der gesuchten Optionen 0 ergbit. Somit kann der Kunde nur noch diejenigen Auswählen, die auch zu einem Ergebniss kommen.
Interesant ist hier der Ansatz den Autoscout24 hier benutzt. Diese zeigen das zu erwartende Ergebniss im Suche Button an.

Mögliche Ideen hierzu gibt es viele, man kann hinter der Auswahl die Menge der Ergebnisse anzeigen, die es beim aktivieren der Chkbox gibt und diese dann dynamisch per Ajax mindern.

Mit geht es hier weniger um die Funktion deines Scripts, sondern eher in die Richtung Usebility. Kein Ergebniss ist bekanntlich immer schlecht, denn da bringt dann die Funktion leider nichts. Ich denke hier an andere Shops, wie zum Beispiel meinen Spielzeugshop, hier wäre die Attributgeschichte von dir super als Produktfinder einzusetzten. Nur sollte der Kunde dann auch ein Ergebniss bekommen wenn er auswählt.

Wir kennen doch alle unsere Kunden und wir wissen doch, das die gerne mit so einem Tool herum spielen und alles mögliche Ausprobieren und wenn des immer Ergebnisse auswirft und keine “Nix gefunden Meldung” dann hat derjenige doch gleich viel mehr Spaß am kaufen undals Shopbetreiber hat man einen richtig geilen Mehrwert für den User.

[QUOTE=nolegend;25632]Wie schon gesagt, es ist schwierig das umzusetzten aber interesant wäre, eine Liveabfrage im Hintergrund, die diejenigen Checkboxen auf disable stellt, bei denen dann das Ergebniss der gesuchten Optionen 0 ergbit. Somit kann der Kunde nur noch diejenigen Auswählen, die auch zu einem Ergebniss kommen.
Interesant ist hier der Ansatz den Autoscout24 hier benutzt. Diese zeigen das zu erwartende Ergebniss im Suche Button an.

Mögliche Ideen hierzu gibt es viele, man kann hinter der Auswahl die Menge der Ergebnisse anzeigen, die es beim aktivieren der Chkbox gibt und diese dann dynamisch per Ajax mindern.

Mit geht es hier weniger um die Funktion deines Scripts, sondern eher in die Richtung Usebility. Kein Ergebniss ist bekanntlich immer schlecht, denn da bringt dann die Funktion leider nichts. Ich denke hier an andere Shops, wie zum Beispiel meinen Spielzeugshop, hier wäre die Attributgeschichte von dir super als Produktfinder einzusetzten. Nur sollte der Kunde dann auch ein Ergebniss bekommen wenn er auswählt.

Wir kennen doch alle unsere Kunden und wir wissen doch, das die gerne mit so einem Tool herum spielen und alles mögliche Ausprobieren und wenn des immer Ergebnisse auswirft und keine “Nix gefunden Meldung” dann hat derjenige doch gleich viel mehr Spaß am kaufen undals Shopbetreiber hat man einen richtig geilen Mehrwert für den User.[/QUOTE]
Ja, das wäre sicher cool…

Aber ziemlich aufwändig (sowohl programmtechnisch als auch zeitlich), da man ja bei [B]jeder [/B]Auswahl aus einer Options-Gruppe [B]alle [/B]möglichen Kombinationen der bisher gewählten Attribute mit [B]allen noch nicht[/B] gewählten Attributen auf ein Ergebnis prüfen müsste, um zu ermitteln, welche der verbleibenden Optionen deaktiviert werden müssen… Die Anzahl der notwendigen Durchläufe wäre das Produkt der Anzahl aller noch nicht ausgewählten Optionen. Da kommt einiges zusammen…

Und das Auswahl-SQL der Attribute ist ziemlich komplex…

Aber ich werde das Problem mal meinem Unterbewusstein zur Bearbeitung übergeben, vielleicht hat es ja (irgendwann) eine zündende Idee…