"Verschachtelte ifsets/ifnotsets und neu: ifvalue"
hier einen neuen, alternativen Parser für ConPresso vorgestellt.
Nun haben wir Markus überzeugen können, diesen "Enhanced Parser" weiter zu entwickeln und ihn kostenlos allen Interessenten zur Verfügung zu stellen.
Zum Verständnis hier ein Auszug aus Markus' Beschreibung:
Für komplexe Anwendungen stellen sich mit dem in ConPresso integrierten Parser einige Probeme, die durch den "verbesserten" Parser gelöst werden sollen:
1. ifSets und ifNotSets lassen sich korrekt und mehrfach verschachteln
2. Fehler bei der Templateerstellung werden analysiert
3. Neue Bedingungen:
* ifValue - erlaubt die Prüfung auf bestimmte Werte mit >, <, = etc.
* ifFirst und ifLast erlauben die spezielle Behandlung des ersten und letzten Artikels auf einer Seite
4. Umfangreiche Debugging-Funktionen (strukturierte Darstellung, Dokumentation des Parsing-Prozesses)
Trotz der neuen Funktionen ist der Parser vollständig kompatibel zu jeder original ConPresso-Installation. Wird der Original-Parser ersetzt, verhält sich das System wie zuvor und alle Anwendungen wie Module werden weiterhin korrekt laufen.
mod_parser (neu) läuft bislang prima auf meinen Seiten! Ich habe inzwischen auch Verschachtelungen über 3-4 Ebenen eingebaut, die zuverlässig interpretiert werden.
Heute ist mir aufgefallen, dass neben <!-- ifvalue --> auch ein <!-- ifNotvalue --> nützlich wäre , um z.B. ein Nichtsetzen einer Auswahl von Werten einbauen zu können.
<!-- iffirst --> und <!-- iflast --> sind einfach genial für eine zuverlässige Tabellengenerierung!
Nachdem sich zeigt, daß ConPresso 4.1.x bei Benutzung von Seitentemplates inkompatibel zu mod_parser ist, habe ich eine angepasste RC3 erstellt, die es bitte zu testen gilt.
Hallo Markus,
bei meinen ersten Tests hat alles funktioniert, auch die Debugging-Ausgabe!
Dazu zwei Fragen:
1) Ist die neue parser-Version auch für 4.0.9 anwendbar?
2) Muss die Änderung in _admin/templates.php noch durchgeführt werden?
zu 1.) ja (es ist der 4.0.9-Parser mit ein paar neuen Zeilen)
zu 2.) ja (wenn man Wert auf das Highlighting in den Templates legt. Ich selbst mache das nicht, daher reicht es für mich alles auf den Server zu kopieren...)
ich habe heute versucht, mit CPO 4.1.2 und mod_parser den bedingten Platzhalter <!-- iffirst -->Ausgabetext<!-- /iffirst --> anzuwenden.
Leider wird auch beim ersten Artikel (Sortierung: manuell) kein Ausgabetext ausgegeben.
Im Debug-Modus des Parsers sieht alles normal aus, nur dass der Ausgabetext fehlt. Es scheint, dass der Parser nicht erkennen kann, welches der erste Artikel ist.
leider klappt es nicht!
Mit <!-- iffirst --> verschwindet der Ausgabetext, mit <!-- iflast --> wird er in jedem Artikel ausgegeben (was ich gerade vermeiden wollte).
Das Template wird in allen drei Artikeln der Rubrik benutzt. Die Sortierung ist auf "manuell" eingestellt.
Ich sende dir die Zugangsdaten zur Website per PM, falls du näher drübergucken möchtest...
Tja... entweder am Sever stimmt was nicht oder Du hast da selbst was zerschossen ... oder natürlich ein Fehler am Parser, der eben nur bei Deinem System auftritt.
Schön, aber wie kriegen wir jetzt raus, warum das bei Dir nicht funktioniert?
Die Teile werden ja alle korrekt erkannt und abgearbeitet. Nur bei iffirst und iflast stimmt was nicht.
Bei meinen Test funktioniert das problemlos.
Hallo Markus,
da bin ich wieder und habe eine Vermutung, woran es liegen könnte:
Innerhalb von <!-- iffirst --> binde ich über einen Platzhalter eine andere Rubrik ein, wie in http://community.conpresso.de/viewtopic ... c&start=75 diskutiert.
Dadurch könnte die Artikel-Zählung durcheinander kommen. Ich müsste wahrscheinlich die entsprechende Variable am Anfang des Skripts auslesen und am Ende zurückschreiben.
Wenn ich wüsste, welche Variablen <!-- iffirst -->/<!-- iflast --> nutzen, könnte ich das ausprobieren.