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:

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:

  1. als reiner "Flag" (also "an" bzw. "aus"): Option oder
  2. 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 "&gt;", usw.)

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:

  1. Im Backend wird die aktuelle Rubrik anhand der Sessiondaten gewählt
  2. 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.
  3. 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:

Die Ausgabe basiert in jedem Fall auf den Header- und Footer-Dateien des Rubrik-Verzeichnisses.