include.con_str_overview.php

Gesperrt
calvini
Beiträge: 95
Registriert: Mo 21. Feb 2005, 12:06
Kontaktdaten:

include.con_str_overview.php

Beitrag von calvini » Mi 4. Mai 2005, 14:45

In Zeile 166
unset($rootStrItem);
soll bestimmt heißen
unset($rootCatItem);
Zum Finden einfach nach "$rootStrItem" suchen, taucht nur da auf (wurde wohl beim Kopieren aus include.str_overview.php übersehen). Scheint zwar trotzdem zu funktionieren, aber sicher ist sicher ;-).

Ist es eigentlich tatsächlich so, dass Änderungen durch Dritte am Kategorienbaum vom Backend ignoriert werden? Oder kann ich, wenn ich innerhalb eines Moduls den Kategorienbaum verändere, dem Backend irgendwie mitteilen, dass es (zumindest beim nächsten Laden einer Seite) den Baum neu laden soll? Bisher bekomme ich es nur hin, wenn ich unter Kategorie einen neuen Baum anlege (da dann strRemakeTreeTable() so aufgerufen wird, dass das Backend es mitbekommt).

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mi 4. Mai 2005, 15:01

Ist es eigentlich tatsächlich so, dass Änderungen durch Dritte am Kategorienbaum vom Backend ignoriert werden?
Eigentlich nicht...das Problem ist, daß das Backend den Kategoriebaum zwischenspeichert, dafür gibt es die Session-Variable remakeStrTable. Wenn diese "true" ist, wird der Baum im Backend neu erzeugt. Ich weiß nicht, ob man vom Frontend aus sämtliche Sessions mit dieser Variable "bestücken" könnte (ist sicherlich möglich, aber die Frage ist, ob das nicht zu Imperformant ist).

Eigentlich müsste man das ganze Konstrukt "Kategorienanzeige bei Artikel und Kategorien" komplett wegwerfen und neu implementieren... :(

calvini
Beiträge: 95
Registriert: Mo 21. Feb 2005, 12:06
Kontaktdaten:

Beitrag von calvini » Mi 4. Mai 2005, 15:18

timo hat geschrieben:Eigentlich nicht...das Problem ist, daß das Backend den Kategoriebaum zwischenspeichert, dafür gibt es die Session-Variable remakeStrTable. Wenn diese "true" ist, wird der Baum im Backend neu erzeugt. Ich weiß nicht, ob man vom Frontend aus sämtliche Sessions mit dieser Variable "bestücken" könnte (ist sicherlich möglich, aber die Frage ist, ob das nicht zu Imperformant ist).
Geht nur um's Backend. Im Frontend soll der Baum schön so bleiben wie er ist ;-). Hintergrund bei mir: Ich arbeite mit einer zweiten Datenbank, deren Elemente teilweise durch Kategorien repräsentiert werden, deshalb muss ich an den Kategorienbaum ran. Ich sehe jetzt aber auch meinen Denkfehler: Da ich mit zwei Benutzern arbeite, ist es ganz klar, dass der zweite Benutzer in seinem Backend nichts mitbekommt, wenn der erste Benutzer den Baum geändert hat. Bei dem ändernden Benutzer funktioniert es wunderbar (wenn auch nur mit Rechtsklick und "aktualisieren" und nicht automatisch, aber das kann ich verschmerzen).
timo hat geschrieben:Eigentlich müsste man das ganze Konstrukt "Kategorienanzeige bei Artikel und Kategorien" komplett wegwerfen und neu implementieren... :(
Jepp, denn wenn ich das richtig sehe, wird, wenn zwei Leute parallel arbeiten und einer den Kategorienbaum ändert, der andere nichts davon mitbekommen ...
Wäre vielleicht besser, bei Änderungen am Kategorienbaum in die Datenbank eine Prüfsumme zu schreiben (z.B. in cat_tree, die Prüfsumme in idcat mit dem Schlüssel 0 in idtree) und erst immer nur die Prüfsumme zu laden. Nur wenn die sich vom gespeicherten Wert unterscheidet, wird der gespeicherte Baum verworfen und neu aufgebaut. Sollte auch noch performant sein, reflektiert aber auch Änderungen anderer Benutzer ...

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mi 4. Mai 2005, 15:22

Das ist eine Lösung - ich würde aber eher die Verwendung von Nested Sets bevorzugen (die ja recht hochperformant sind), in Kombination mit den cTree-Klassen innerhalb Contenido.

Den obigen Bug (falscher Variablenname) werde ich demnächst fixen, aber das Thema Aktualisierung bleibt leider erstmal eine Open Issue :(

calvini
Beiträge: 95
Registriert: Mo 21. Feb 2005, 12:06
Kontaktdaten:

Beitrag von calvini » Mi 4. Mai 2005, 15:24

timo hat geschrieben:ich würde aber eher die Verwendung von Nested Sets bevorzugen (die ja recht hochperformant sind), in Kombination mit den cTree-Klassen innerhalb Contenido.
Hast Du mal einen Link dazu? Sagt mir nämlich nichts :oops: ...

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mi 4. Mai 2005, 15:32

Sehr gerne:

http://www.develnet.org/36.html

Selbst eine Abfrage mit mehreren tausend Nodes geht sehr schnell, das einzige, was etwas langsamer ist, sind Updates am NestedSet (was ja aber auch im Sinne des Erfinders ist).

Contenido erzeugt ja derzeit aus der flachen Tabelle "con_cat" und deren Informationen die Tabelle "con_cat_tree", wobei hier natürlich das Problem besteht, daß das Verschieben eines Baumes oder Kategoriepunktes gleich sämtliche Sprachen tangiert werden. So etwas liesse sich einfach durch ein NestedSet lösen, außerdem könnte man dann auch die sprachabhängigen Teile in das NestedSet eintragen (und sogar andere "Objekte"). Mein persönlicher Wunsch wäre es, daß nicht nur con_cat-"Objekte" in der Struktur vorhanden sind, sondern auch z.b. Sprachen, Mandanten usw, denn alles, was man heute in Contenido findet, kann man irgendwo in einer Struktur (durch die entsprechenden Relationen) abbilden.

calvini
Beiträge: 95
Registriert: Mo 21. Feb 2005, 12:06
Kontaktdaten:

Beitrag von calvini » Mi 4. Mai 2005, 15:41

Sieht interessant aus, werde ich mich am Wochenende mal mit beschäftigen ...

Gesperrt