Seite 1 von 1

Fehler in der Hauptnavigation (4.6.23)

Verfasst: Do 17. Jan 2008, 11:48
von baumpaul
Bild

Wie man sieht funktioniert etwas ab der dritten Ebene nicht mehr.

Der Navigationspunkt Vertraulich müsste in der ul.e3 sein.

Verfasst: Do 17. Jan 2008, 14:43
von wosch
Könnte ein Teil auch dieses Problemes sein:

http://contenido.org/forum/viewtopic.php?t=19518

Verfasst: Do 17. Jan 2008, 15:14
von baumpaul
wosch hat geschrieben:Könnte ein Teil auch dieses Problemes sein:

http://contenido.org/forum/viewtopic.php?t=19518
ja, das Problem ich mir auch aufgefallen.

Verfasst: Fr 18. Jan 2008, 20:25
von OliverL
einer temporäre Lösung wäre das folgende
(ist aber supoptimal | nutze selbst ein optionaleres Modul)

ersätzt sämtliche UL-Tag mit der Class "e"+Nummer


Alt

Code: Alles auswählen

/* Read out buffer */
$html = ob_get_contents();

/* Clean buffer */
Neu:

Code: Alles auswählen

/* Read out buffer */
$html = ob_get_contents();

$suchmuster = "|<ul class=\"e[0-9]*\">(\\r)?\\n</ul>|Uis";
$html = preg_replace($suchmuster, '', $html, -1 );
unset($suchmuster);

/* Clean buffer */

Verfasst: Mo 21. Jan 2008, 08:10
von baumpaul
Was soll das denn bewirken? Wir brauche keine Klasse e. Das Problem ist vielmehr dass die li-Tags nicht im ul-Tag sind, sondern erst danach kommen.

Verfasst: Mo 21. Jan 2008, 08:17
von OliverL
Ups, mein Fehler. War schon spät :)

Verfasst: Mi 23. Jan 2008, 16:38
von baumpaul
Wird an dem Problem gearbeitet? Ist doch ein ziemlicher BUG. So ist die neue Version für mich überhaupt nicht einsetzbar.

Verfasst: Mi 23. Jan 2008, 21:33
von emergence
baumpaul hat geschrieben:Wird an dem Problem gearbeitet?
hmm.. ich glaub nicht...

schnapp dir doch in der zwischenzeit eine andere navigation aus dem forum...

Verfasst: Mi 23. Jan 2008, 22:22
von baumpaul
jooo, muss i wohl machn. Die aus der alten Version geht hier ja nicht mehr. Mal schauen ob die andere noch funktionieren.

Verfasst: Mo 7. Apr 2008, 12:08
von djavet
Hallo

Wir sind im April jetzt. Gibt es jetzt ein Fix für diese Bug?

Danke im Voraus,
Dom

Fehler behoben?!

Verfasst: Di 3. Jun 2008, 16:28
von Meykoenig
Das Problem ist, wie mir scheint, das die Ebene 2 zu früh mit einem </ul></li> beendet wird bevor noch folgende Elemente der tieferen Ebene 3 ausgeführt werden. Bei den Ebenen 3-5 dürfte es das gleiche sein.

Problem ist nach meiner Ansicht dieser Code-Teil:

Code: Alles auswählen

if( is_array( $second_subdata ) ) {
  	$last_cat = end( $second_subdata );
		if( $data['idcat'] == $last_cat['idcat'] ) {
			 $tpl->generate('templates/mnavi_end.html', 0, 0);
  		} // end if
} // end if
b.z.w. das Gegenstück in den anderen Ebenen.
Hier wird anscheinend geschaut auf die Ebene zu Ende ist und dann mit </ul></li> geschlossen. Dabei geht es meiner Ansicht nach einfacher: Die Ebene ist zu Ende wenn die Schleife zu Ende ist :!:

Ich habe nun den Code oben auskommentiert und schließe die Ebene durch Aufruf des Templates

Code: Alles auswählen

$tpl->generate('templates/mnavi_end.html', 0, 0);
nach dem Ende der jeweiligen foreach()-Schleife ab.

Allerdings muss man die Prüfung vor dem Beginn jeder foreach-Schleife ab Ebene 3 erweitern um zu verhindern das die Schleife einmal durchlaufen wird auch wenn es keine tiefere Ebene gibt:
Statt

Code: Alles auswählen

if( is_array($data['sub']) ) {
nun

Code: Alles auswählen

if( is_array($data['sub']) && count($data['sub'])>0) {
Nun funktioniert die Hauptnavigation bei mir.

Das XML für die geänderte Version ist HIER zu finden.
(Die zugehörige Seite ist noch nicht ganz fertig :oops: ,
bin bei den Arbeiten daran auf das Problem und diese Lösung gestoßen)

Kleiner Fehler in der Korrektur

Verfasst: Do 17. Jul 2008, 10:32
von Meykoenig
Upps :oops: , da war noch ein kleiner Logik-Bug in der Korrektur.
Gibt es, nach dem es einen Ordner einer tieferen Ebene als 1 gegeben hat, weitere Ordner der Stufe 1 die keine Unter-Ordner haben so wird die Liste einmal zu viel geschlossen.

Um das zu vermeiden muss bei der Prüfung ob es eine zweite Ebene gibt nicht nur geprüft werden ob es ein Array gibt sondern auch ob es leer ist, da es bereits früher (sobald es tiefere Ebenen gab) angelegt wurde.

Also statt

Code: Alles auswählen

 /* 2. Navigation level */
  if( is_array($data['sub']) ) {

Code: Alles auswählen

  /* 2. Navigation level */
  if( (is_array($data['sub']) && !(empty($data['sub'])) ) ) {
Das XML ist nun entsprechend geändert.

Danke, danke, danke ...

Verfasst: Mi 15. Apr 2009, 05:57
von ralfhaerter
[quote="Meykoenig"]Das XML ist nun entsprechend geändert.[/quote]

Vielen Dank ... mein Lebensretter. ;-)

Der Auswertungsfehler und damit die falsche Auszeichnung zur Navigationsstruktur ist auch in der Version 4.6.24 enthalten gewesen.

Ich finde es sehr schade (* ist das die politisch-korrekte Formulierung für !"§$%&/*'+$ *), dass die 4.6.24 als letzte PHP4 / MySQL4 Version gerade in diesem Punkt nicht gepatched wurde.

Schliesslich haben noch längst nicht alle Hostingservices auf PHP5 / MySQL5 umgestellt. - Und was ist mit vorhandenen CMSs, die gelegentlich gewartet und erweitert werden sollen?

Re: Fehler in der Hauptnavigation (4.6.23)

Verfasst: Mi 15. Apr 2009, 12:23
von GaMbIt_
Ich kenne keinen Provider der nicht auch PHP5 anbietet...
Gibts bei Deinem keine Möglichkeit das per .htaccess umzuschalten?
Ein Provider der heute noch kein PHP5 anbietet arbeitet nicht zeitgemäss...


Zum patchen...

Irgendwann ist eine neue Verion dran und irgendwann muss auch einmal ein Schnitt gemacht werden...

Re: Fehler in der Hauptnavigation (4.6.23)

Verfasst: Mi 15. Apr 2009, 22:28
von Oldperl
@GaMbIt_
es gibt noch genug "alten" Webspace, der mit PHP4 läuft und auch nicht vom Provider auf PHP5 umgestellt wird. Zumeist gibt es nicht mal die Möglichkeit eines Wechsels in ein neueres Paket oder ein Upgrade. Anbieten für neue Pakete tun es fast alle, aber Umstellen bei alten Paketen die wenigsten.

@ralfhaerter
ich muss meinem Vorredner insoweit zustimmen, das irgendwann bei jeder Software ein Punkt kommt, wo es neue Vorraussetzungen für diese gibt.
Viele Programme für Vista laufen auch nicht mehr auf Win98. :roll:

PHP4 ist bereits deprecated
Wikipedia hat geschrieben:Am 13. Juli 2007 hat das Entwickler-Team angekündigt, die Unterstützung für PHP 4 bis zum August 2008 einzustellen
Guckst du hier :arrow: http://de.wikipedia.org/wiki/PHP
Die Version 6 ist in der Entwicklung und daher muss jedes Script, auch aus Sicherheitsgründen, den Sprung auf eine neue Version vornehmen.

Gruß aus Franken

Ortwin