Kategoriebaum, Reihenfolge in DB ändern

Gesperrt
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Kategoriebaum, Reihenfolge in DB ändern

Beitrag von stefkey »

Hallo,

ich habe mal ne ganz seltsame frage:

Wie bekomme ich links in dem Kategoriebaum im Backend den 2 Bäume in der Reihenfilge getauscht?

Es geht nur um die optische Anordnung der Bäume!

Es steht da:

- Servicenavigation
- Kategorie 1
- Kategorie 2
- ...
- Hauptnavigation
- Kategorie 1
- Kategorie 2
- ...


Es soll aber der Baum der Hauptnavigation oben stehen!
In der Datenbank sollte das doch änderbar sein... irgendein index?


Ich weiß, komische Frage.

Natürlich gehts auch mit verschieben und umbenennen usw...

Aber es sollte doch auch kompliziert gehen können? Wie? Wo wird die Reihenfolge ausgelesen?


Besten Dank
stefkey
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

okay, hab etwas gefunden.

Wenn ich in cat_tree die id_tree ändere passts zuerst mal.

Aber wenn ich nun eine neue Kategorie im Backend erstelle wird diese Tabelle neu geschreiben und alles ist wie vorher, nur mit anderen id_tree.

Wo ist der Ursprung?


Grüße,
stefkey
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL »

Moin stefkey,

Das ist nicht ganz so einfach, da es ein zusammen Spiel zwischen con_cat und con_cat_tree ist.

In con_cat wird die Reihenfolge für das Backend gespeichert.
Hier solltest du dir die Spalten "idcat", "parentid", "preid", "postid" anschauen

idcat
- sollte klar sein

parentid
- ist natürlich die ID der Kategorie in der sich diese aktuelle Kategorie befindet.
- 0 = Kategorie ist ein Baum

preid
- 0 = erster Menüpunkt in dem Level bzw Hierarchie
- ansonsten die ID der vorherigen Kategorie

postid
- 0 = letzte Menüpunkt in dem Level bzw Hierarchie
- ansonsten die ID der nachfolgenden Kategorie


Beispiel in dem eine 3te Kategorie ergänzt und an Position 2 (eins nach oben) verschoben wurde
Datenbank-Dump:
idcat parentid preid postid
1 1 0 0 3
2 1 0 3 0
3 1 0 1 2

korrekte Sortierung:
idcat parentid preid postid
1 1 0 0 3
3 1 0 1 2
2 1 0 3 0


Um die Performance des Frontend zu verbessern wird das ganze in richtiger Reihenfolge in der con_cat_tree gespeichert.
Dieses "Cachen" der Stucktur kann man einfach erneuern in dem man aus dem File "contenido/includes/functions.file.php" die Funktion strRemakeTreeTable().

Hier ist ganz simpel festgehalten:
idtree gibt die Reihenfolge an, idcat logischerweise die Kategorie und level in welcher Tiefe die Kategorie ist.



Somit ist mein Resume:
con_cat ist fürs Backend und con_cat_tree (ist Cache) für das Frontend.
Wenn du was änderst dann in der con_cat und ausführen der strRemakeTreeTable().



mfg OliverL
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

yep! Hat geklappt!

habe in con_cat die entsprechenden 2 Einträge geändert.

Zum aktualisieren habe ich eine Kategorie im Backend hinzugefügt, dadurch wird wohl die strRemakeTreeTable() aufgerufen.

Wie kann ich die funktion strRemakeTreeTable() noch aufrufen?

In ein Modul packen?

Kannst du es kurz aufschreiben? Ich kann kein php :oops:


Besten Dank und Grüße,
stefkey
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

Noch eine Spezialfrage:

Wenn ich einen Artikel verschiebe bekommt er eine neue idartlang.

Kann ich den Artikel auch in der DB "verschieben" sodass keine neue idartlang vergeben wird?

Wenn es blos kleine Änderungen in 1-2 Tabellen sind wäre das ja machbar. Welche Tabellen sind relevant?


Danke,
stefkey
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

okay, hab jetzt in der con_cat_art einfach die idcat entsprechend geändert!

Passt schon.

Reicht das?

Sind die Änderungen sicher nur in diesen Tabellen oder ist mein System jetzt gefährdet und kann irgendwann deswegen spinnen?


Danke nochmal,
stefkey
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL »

Nummer 1:
Modul-Input:

Code: Alles auswählen

cInclude( "includes", "functions.file.php");
strRemakeTreeTable();
... und tätääääää!

Nummer 2:
Ich glaube schon das es reicht in der con_ca_art zuändern.
Hab das jetzt aber nicht nachgeschaut.

Nummer 3:
Warum um Gottes willen wist du denn alles über die DB machen?
Wenn du keine PHP-Kenntnisse hast kann ich doch davon ausgehen das du kein abgedrehtes Modul bauen willst oder?

mfg OliverL
Gesperrt