Schrift
[thread]8555[/thread]

Verzeichnisbaum erstellen

Leser: 1


<< >> 4 Einträge, 1 Seite
Magic
 2006-12-07 11:16
#72294 #72294
User since
2003-09-30
91 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,
ich optimiere zur Zeit mal wieder fleissig an meinem CMS/Shop-System und bin jetzt in einer Sackgasse angekommen.
Der Shop (z.B. unter http://www.elektroparts24.com) läuft soweit ganz gut und ist auch, meines Erachtens nach, recht performant. Einziger Wehmutstropfen in Sachen Performence ist die Navigation.
Auf der oben genannten Site, ist der Shop mit ca. 30.000 Artikeln gefüllt, das CMS-System verwaltet etwa 8 Seiten. Der Verzeichnisbaum auf der linken Seite funktioniert so, dass ein Klick auf eine Warengruppe, die Warengruppen anzeigt, die der angeklickten untergeordnet sind.
Das ganze ist, mehr oder weniger als "schnelle Lösung" folgendermassen aufgebaut:
In einer Datenbank sind die Warengruppen gespeichert. Jede Warengruppe ist entweder eine Hauptgruppe, oder eine Untergruppe einer anderen Warengruppe.
Klickt der User nun auf eine Warengruppe, schaut das System nach, ob diese Gruppe eine Untergruppe ist. Wenn ja, wird die Hauptgruppe gesucht und die Abfrage geht rekursiv weiter, bis die Hauptgruppe ermittelt ist.
Wenn die Hauptgruppe ermittelt ist, wird der Verzeichnisbaum aufgebaut. Jede Hauptgruppe wird nacheinander im Verzeichnisbaum eingefügt, bis die aktive, also gerade angelickte Gruppe erreicht ist. Nun wird ermittelt, welche Warengruppen dieser untergeordnet sind. für jede Untergruppe wird geschaut, welche, der untergruppe untergeordnet sind... rekursiv, bis die letzte Ebene erreicht ist.

Hört sich kompliziert an, ist es auch in der perligen Umsetzung :D

Wie ich finde, ist das ganze Navigatiopns-Gedöns alles andere als optimal oder perfomant, erfüllt aber seine leidige Bestimmung.
Das ganze Navigationsgezumpel ist mit nur 1(!) einzigen Eintrag in der Tabelle der Warengruppen realisiert worden. Dieser eine Eintrag ist die warengruppenID der übergeordneten Gruppe, oder '0'.

Hat irgendwer ein paar Tipps, wie ich das ganze flotter bekomme oder ist wer der Meinung, dass was ich mir da zusammengezimmert habe ist absoluter Bullshit und weiss wie es "richtig" geht?
Bin für jede Idde, jeden Tipp oder Hinweis offen.

Grüße,
Stefan
Ein Weiser gibt nicht die richtigen Antworten, sondern er stellt die richtigen Fragen.
renee
 2006-12-07 11:34
#72295 #72295
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wie ist das genau in der Datenbank gespeichert? Kannst Du ein paar Beispieldaten posten?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Magic
 2006-12-07 12:42
#72296 #72296
User since
2003-09-30
91 Artikel
BenutzerIn
[Homepage] [default_avatar]
also, die Tabelle für die Warengruppe ist folgendermassen aufgebaut:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
classID                 = die ID der Warengruppe
ext_classID = externe Warengr. ID
für Datenabgleich mit
Warenwirtschaft
classname = Bezeichnung/Name der WG
description = Beschreibung
icon = ein Icon halt
shop_usage = die verwendung im Shop
vendors_as_subclasses = var die angibt, ob die
Hersteller als Untergruppen
eingebaut werden sollen
mainclass = Die ID der übergeordneten
Warengruppe



Alle Warengruppen die ganz oben in der Hirarchie stehen, also keine Untergeordneten Gruppen sind, haben die mainclass "0".
Untergordnete Kategorien haben dort halt die "classID" ihrer übergeordneten Warengruppe stehen.

Grüße,
Stefan\n\n

<!--EDIT|Magic|1165488363-->
Ein Weiser gibt nicht die richtigen Antworten, sondern er stellt die richtigen Fragen.
pq
 2006-12-07 14:57
#72297 #72297
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Wikipedia:Nested Set
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 4 Einträge, 1 Seite



View all threads created 2006-12-07 11:16.