ConPresso 4.0 Beta-Version
Einleitende Informationen
Liebe Beta-Tester,
diese README wurde geschrieben, um Ihnen erste Informationen zu den
Beta-Versionen von ConPresso 4 zur Verfuegung zu stellen.
Aufgrund des noch fertigzustellenden Handbuchs und der fehlenden
Online-Hilfe ist diese Beta-Version hauptsaechlich fuer Benutzer gedacht, die
sich mit den bisherigen ConPresso-Versionen sehr gut auskennen. Einsteiger
sollten auf das endgueltige Erscheinen der Version 4 warten oder die Version
3.4.8 einsetzen.
Insbesondere die zweite jetzt veroeffentlichte Beta-Version ist
als Vorschau auf das kommende ConPresso 4 zu sehen. Sie ist auf
keinen Fall fuer den Produktionsbetrieb geeignet oder zu benutzen. Wir arbeiten
derzeit noch an diversen Modifikationen und natuerlich an
Detailverbesserungen. Hierzu zaehlen die folgenden Punkte:
- Detailverbesserungen am Quellcode
- Modul-Schnittstelle
- HTML-Editor fuer Internet-Explorer und Mozilla
- Handbuch / Online-Hilfe
- Uebersetzungen
- Dokumentation / Beispiele zur dynamischen Navigation
- Modulschnittstelle / Module
- Reaktivierung des Logfiles
- ...
Alle Änderungen und ggf. notwendige
Entwicklungsschritte dieser Beta-Version zu kommenden Beta-Versionen und dem
endgültige Release werden detailliert dokumentieren. Es wird somit prinzipiell möglich
sein, diese Version in die endgültige Version 4.0 zu überführen. Von einem
Einsatz dieser Beta-Version für wichtige produktive Projekte raten wir jedoch noch ab.
Die folgenden Informationen sollen Ihnen einen kleinen Ueberblick ueber die
zwei Bereiche Template- und Rubriksystem geben, die sich von der Version 3 sehr
stark unterscheiden. Wenn Sie Fragen zu den Punkten haben, kontaktieren Sie uns
bitte ueber unsere Support-Adresse support@conpresso.de.
Ausserdem haben wir ein neues Forum im Supportbereich der Conpresso Homepage eingerichtet, in der Sie die Beta-Versionen diskutieren koennen.
Das Templatesystem von ConPresso 4
Grundlagen
Die neuen Templates unterscheiden sich von den alten <%cpoPlatzhalter%>-Tags dadurch, dass sie HTML-Standards entsprechenden Tags darstellen: Kommentare.
Dieses hat den Vorteil, dass ein fehlerhafter Tag keine Probleme mehr im generierten Code machen kann. Die alten Tags wurden bei fehlerhafter Schreibweise in manchen Browsern als Text dargestellt - der IE z.B. behandelte sie als HTML-Tags, konnte aber nicht mit ihnen anfangen und hat sie einfach ignoriert.
Die Platzhalter liefern per Default gueltiges XHTML zurueck. Im Gegensatz zur alten Version ohne unnoetigen Ballast z.B. in Form von zusaetzlichen <span class="text">
-tags.
Die Grundstruktur eines neuen ConPresso-Tags sieht wie folgt aus:
<!-- Typ: Name -->
Es gibt mehrere Typen, die den unterschiedlichen Platzhalter-Arten entsprechen (Bilder, HTML-Code, Text, usw.).
Der Name dient dazu jeden Platzhalter zu identifizieren und wird bei der Artikeleingabe als "Ueberschrift" neben den Eingabefeldern angezeigt.
Zusaetzlich koennen noch Optionen in jedem Platzhalter definiert werden. Diese werden durch ";" getrennt hinter dem Namen angegeben - z.B.:
<!-- Typ: Name; Option -->
Auch mehrere Optionen sind moeglich:
<!-- Typ: Name; Option 1; Option 2 -->
Optionen koennen in zwei Formen vorkommen:
- als reiner "Flag" (also "an" bzw. "aus"):
Option
oder
- als Option/Wert-Kombination:
Option=Wert
Ueber diese Optionen wird hauptsaechlich die Ausgabe der Platzhalter gesteuert. Andere Optionen die die Eingabe eines Platzhalters betreffen koennen in den Template-Einstellungen bearbeitet werden.
Ausserdem gibt es Optionen, die nur alleine oder kombiniert mit anderen Optionen benutzt werden koennen. Diese Moeglichkeit ergibt sich aus der Optionen-Beschreibung.
Typen
Bei einigen der aufgezaehlten Typen wird in der Beschreibung das Stichwort "Entity-Umwandlung" benutzt. Dieses Stichwort bedeutet, dass vor der Ausgabe des jeweilgen Inhalts die HTML-Sonderzeichen in ihre Entities umgewandelt werden (">" wird zu ">", usw.)
- Image - Bilder
- File - Dateien
- Text - reines Textformat
- HTML - Texte im HTML-Format (HTML-Editor)
- URL - Verweise
- Value - diverse Wert-Platzhalter
Bedingte Ausgabe
Image - Bilder
HTML-Ausgabe ohne Optionen:
<img src="../_data/Dateiname"
alt="Alttext"
title="Beschreibung"
width="Breite"
height="Hoehe" />
Ausgabe-Optionen:
file
Es wird nur der Dateiname des Bildes ausgegeben.
alttext
Es wird nur der Alttext des Bildes ausgegeben (Entity-Umwandlung).
width
Es wird nur die Bildbreite ausgegeben (in Pixeln).
height
Es wird nur die Bildhöhe ausgegeben.
description
Es wird nur die Bildbeschreibung ausgegeben (Entity-Umwandlung).
Beispiele:
ohne Option: <!-- Image: ein Bild; --><br />
Dateiname: <!-- Image: ein Bild; file --><br />
Alttext: <!-- Image: ein Bild; alttext --><br />
Bildbreite: <!-- Image: ein Bild; width --><br />
Bildhöhe: <!-- Image: ein Bild; height --><br />
Beschreibung: <!-- Image: ein Bild; description --><br />
File - Dateien
HTML-Ausgabe ohne Optionen:
<a href="../_data/Dateiname">Beschreibung [Dateigrösse]</a>
Die Dateigrösse hierbei wird "human readable" - also "menschenlesbar" ausgegeben: z.B. als 128Kb
Ausgabe-Optionen:
file
Es wird nur der Dateiname ausgegeben.
description
Es wird nur die Beschreibung ausgegeben.
hrsize
Es wird nur die Dateigrösse ausgegeben (im "human readable"-Format).
size
Es wird nur die Dateigrösse ausgegeben (in Bytes).
Beispiele:
ohne Option: <!-- File: eine Datei --><br />
Dateiname: <!-- File: eine Datei; file --><br />
Dateigrösse I
: <!-- File: eine Datei; hrsize --><br />
Dateigrösse II
: <!-- File: eine Datei; size --> in Bytes<br />
Beschreibung: <!-- File: eine Datei; description --><br />
Text - einfache Texte
Einfache Texte sind bei der Eingabe von Artikeln einfache <textarea>-Felder ohne HTML-Editor. Sie eignen sich besonders um den Redakteuren die Moeglichkeiten einer HTML-Formatierung zu verbieten, mit dessen Hilfe eventuell das Aussehen der Seite veraendert werden kann...
HTML-Ausgabe ohne Optionen:
Text
HTML-Sonderzeichen werden in Entities gewandelt.
Ausgabe-Optionen:
strip_tags
Vor der Umwandlung der HTML-Sonderzeichen werden HTML-Tags entfernt.
nl2br
(Newline to Break) - Zeilenumbrueche werden nach der Umwandlung der HTML-Sonderzeichen in <br />-Tags umgewandelt.
Beispiele:
Normal: <!-- Text: ein Text --><br />
HTML-Tags entfernt: <!-- Text: ein Text; strip_tags --><br />
Zeilenumbrüche als <br>: <!-- Text: ein Text; nl2br --><br />
kombiniert: <!-- Text: ein Text; striptags; nl2br --><br />
HTML - HTML-Texte
HTML-Texte erlauben (je nach Möglichkeit des Browsers, etc.) die Benutzung des HTML-Editors zur Eingabe von Texten.
HTML-Ausgabe ohne Optionen:
Text mit <b>HTML-Code</b>
Ausgabe-Optionen:
strip_tags
HTML-Tags werden vor der Ausgabe aus dem Text entfernt.
htmlspecialchars
HTML-Sonderzeichen werden vor der Ausgabe in Entities umgewandelt.
Beispiele
Normal: <!-- HTML: HTML --><br />
HTML-Tags entfernt: <!-- HTML: HTML; strip_tags --><br />
HTML-Entities: <!-- HTML: HTML; htmlspecialchars --><br />
kombiniert: <!-- HTML: HTML; strip_tags; htmlspecialchars --><br />
URL - Verweise
HTML-Ausgabe ohne Optionen:
<a href="Linkziel" evtl. Target>Linktext</a>
Im Linktext werden HTML-Sonderzeichen durch Entities ersetzt.
Ausgabe-Optionen:
strip_tags
HTML-Tags werden vor der Ersetzung der HTML-Sonderzeichen aus dem Linktext entfernt.
back
Statt eines normalen Links wird ein Javascript-Link erzeugt, der zurueck auf die vorhergehende Seite springt (javascript:history.back()
).
more
Statt eines normalen Links wird ein Link auf die Detailseite des Artikels ausgegeben.
starttag
Es wird nur der Starttag (<a href="Linkziel" target="evtl. Target">
) ausgegeben.
url
Es wird nur das Linkziel ausgegeben (Entity-Umwandlung)
text
Es wird nur der Linktext ausgegeben (Entity-Umwandlung)
target
Es wird nur ein eventuelles Target ausgegeben (Entity-Umwandlung).
Beispiele:
Normal: <!-- URL: eine URL --><br />
nur Starttag: <!-- URL: eine URL; starttag -->Anderer Text</a><br />
URL: <!-- URL: eine URL; url --><br />
Linktext: <!-- URL: eine URL; text --><br />
Nur das Target: <!-- URL: eine URL; target --><br />
ohne HTML-Code: <!-- URL: eine URL; strip_tags --><br />
Sonderfälle (mit obigem kombinierbar): <br />
Zurück-Link: <!-- URL: eine Zurueck-URL; back --><br />
zur Detailseite: <!-- URL: eine Detail-URL; more --><br />
zur Detailseite (kombiniert mit starttag): <!-- URL: eine Detail-URL; more; starttag -->anderer
Text</a><br />
Value - diverse Wert-Platzhalter
Diese Platzhalter sind insofern etwas besonderes, da sie statt eines Namens den jeweiligen "Platzhalter-Namen" angegeben bekommen. Zum Beispiel:
<!-- Value: Author -->
Diese Platzhalter können nur zur Ausgabe von Informationen benutzt werden. Man kann sie benutzen um die Meta-Daten eines Artikels (Titel, Autor, etc.) auszugeben. Wenn z.B. der Name des Templates ausgegeben werden soll, kann man schreiben:
Dieser Artikel basiert auf dem Template: <!-- Value: template -->
Value: author
HTML-Ausgabe ohne Optionen:
<a href="mailto:Autor-eMail">Autor-Name</a>
Ausgabe-Optionen
name
Es wird nur der Name des Autors ausgegeben (Entity-Umwandlung).
email
Es wird nur die eMail-Adresse des Autors ausgegeben (Entity-Umwandlung).
initials
Es werden nur die Initialen des Autors ausgegeben (Entity-Umwandlung).
Beispiele
Autor: <!-- Value: author --><br />
Autorname: <!-- Value: author; name --><br />
Autormail: <!-- Value: author; email --><br />
Initialen: <!-- Value: author; initials --><br />
Value: articlenr
Gibt die Artikelnummer des Artikels aus
Beispiel
Artikelnummer:<!-- Value: articlenr --><br />
Value: template
Gibt den Namen des verwendeten Templates aus.
Beispiel
Template:<!-- Value: template --><br />
Value: articleidx
Gibt den Index des Artikels aus.
Beispiel
Artikelindex:<!-- Value: articleidx --><br />
Value: pub_date
Gibt das Publikationsdatum formatiert mit dem Datumsformat aus den Rubrikeinstellungen aus.
Ausgabe-Optionen:
timestamp
Gibt das Publikationsdatum als UNIX-Timestamp aus.
format=
Mit der Option format= kann man das Format der Ausgabe aendern. Moeglich sind die Formatzeichen, die auf http://de.php.net/date beschrieben werden.
Beispiele
Publikationsdatum:<!-- Value: pub_date --><br />
Publikationsdatum:<!-- Value: pub_date; timestamp --> (Unix-Timestamp)<br />
Publikationsdatum - Swatch-Time: <!-- Value: pub_date; format=B --> <br />
Value: exp_date
Gibt das Verfallsdatum formatiert mit dem Datumsformat aus den Rubrikeinstellungen aus.
Ausgabe-Optionen:
timestamp
Gibt das Verfallsdatum als UNIX-Timestamp aus.
format=
Mit der Option format= kann man das Format der Ausgabe aendern. Moeglich sind die Formatzeichen, die auf http://de.php.net/date beschrieben werden.
Beispiele
Verfalldatum: <!-- Value: exp_date --><br />
Verfalldatum: <!-- Value: exp_date; timestamp --> (Unix-Timestamp)<br />
Verfalldatum - Swatch-Time: <!-- Value: exp_date; format=B --> <br />
Value: title
Gibt den Titel des Artikels aus (Entity-Umwandlung).
Ausgabe-Optionen:
strip_tags
Vor der Umwandlung der Entities werden HTML-Tags aus dem Titel entfernt.
Beispiele
Titel:<!-- Value: title --><br />
Titel (ohne HTML-Tags):<!-- Value: title; strip_tags --><br />
Das Rubriksystem von ConPresso 4
Grundlagen
Das neue Rubriksystem bietet einen entscheidenden Vorteil gegenüber dem alten: Es werden nicht mehr für jede Rubrik eigene Rubrikverzeichnisse benötigt. Neue Rubriken kann man einfach ueber das ConPresso-Backend anlegen und verwalten.
Da wir aber meinen, dass gerade die Rubrikverzeichnisse ein besonderes Feature von ConPresso sind, gibt es sie dennoch - aber in abgewandelter Form. Ein besonderes Feature sind sie deshalb, weil man durch Ändern der enthaltenen Dateien eine Rubrik schnell umbauen und z.B. externe Programme wie Foren, Formularmailer, usw. einbauen kann.
Das Besondere an den neuen Rubrikverzeichnissen ist: Jedes Rubrikverzeichnis kann alle Rubriken darstellen. Aus diesem Grund ist es nötig, dass beim Erstellen einer Rubrik im Backend für jede Rubrik ein Verzeichnis ausgewählt wird.
Die Basis des Rubriksystems ist eine neue Rubrik mit dem Namen "_rubric" (nicht mehr auf Basis der Rubirk "news"). Diese Rubrik lässt sich wie gewohnt über die bekannten Header- und Footer-Dateien anpassen, als Kopiervorlage für neue Rubrikverzeichnisse benutzen, usw...
Wenn dieses Verzeichnis (oder eine Kopie davon) im Browser aufgerufen wird, erkennt ConPresso die eigentliche Rubrik anhand des folgenden Ablaufs:
- Im Backend wird die aktuelle Rubrik anhand der Sessiondaten gewählt
- Wird ein Parameter "rubric" in der URL oder per Formular übergeben
- und entspricht dieser einer Nummer ("?rubric=2"), wird die Rubrik mit der angeforderten Rubrik-ID benutzt.
- und entspricht dieser einer Zeichenkette ("?rubric=News"), wird versucht, die Rubrik anhand des Rubriknamens zu identifizieren.
- Wurde bis jetzt keine Rubrik gefunden, wird die Rubrik anhand des Verzeichnisnamens gesucht.
- Entspricht ein Rubrikname dem Verzeichnisnamen, wird diese Rubrik gwählt.
- Sonst wird die erste gefunden Rubrik genommen.
Das hört sich kompliziert an, ist es aber nicht. Hier nochmal anders beschrieben:
- Erstellt Ihr eine Rubrik, die dem Rubrik-Verzeichnisnamen entspricht, verhält ConPresso sich wie im alten System und zeigt die Artikel an, die zu diesem Rubrik-Verzeichnis gehören.
- Durch Übergabe eines Parameters "rubric" (Name oder Rubrik-ID) könnt Ihr die Rubrik direkt auswählen.
- Ist keiner der Punkte oben gegeben, wählt ConPresso die erste Rubrik, die in den Rubrikeinstellungen dieses Rubrikverzeichnis zugeordnet bekommen hat.
Die Ausgabe basiert in jedem Fall auf den Header- und Footer-Dateien des Rubrik-Verzeichnisses.