NanoCMS Template-Prozessor

Aus Melin DokuWiki

Wechseln zu: Navigation, Suche

In diesem Kapitel gehen wir auf das Erstellen von Templates und die vielfältigen Funktionen, die in Templates zur Verfügung stehen ein. Templates sind Eingabemasken für Inhalte und sorgen dafür daß alle Seiten einer Website ähnlich aussehen und zueinander passen.

Bei der Erstellung eines Templates bestimmen Sie, welche Elemente einer Seite vorgegeben sind und welche Elemente vom Redakteur hinzugefügt oder bearbeitet werden können.

Angenommen, Sie sind Herausgeber einer Online-Zeitschrift. Sie würden nicht wünschen, dass jeder Redakteur das Layout der Leitseite ändern kann. Dies würde in kürzester Zeit zu einem unheilbaren Chaos führen. Aber natürlich soll in jeder Ausgabe ein neuer Leitartikel veröffentlicht werden.

Übertragen auf ein Template ist das Layout, bestehend aus

• Größe, Position und Art der Grafiken • Aussehen und Position des Leitartikels

fest vorgegeben und kann beim Erstellen des neuen Leitartikels vom User nicht geändert werden. Nur der Bereich der Seite, den Sie bei der Erstellung des Templates für den Leitartikel-Text vorgesehen haben, kann editiert werden.

Zusätzlich können Sie dem User die Möglichkeit geben, eine oder mehrere Grafiken auszuwählen und in seinem Artikel an ebenfalls durch Sie definierten Stellen zu platzieren.

10. Die Grundlagen

Templates sind HTML-Dateien, in denen das Layout des Zieldokuments schon festgelegt ist. Über Eingabe-Elemente wird vom User der Inhalt, den das Zieldokument enthalten soll, eingegeben. In der Praxis öffnet ein User das Template, trägt den Inhalt in die entsprechenden Eingabe-Elemente ein und speichert seine Eingaben. Imperia erzeugt daraus ein Dokument, das, nachdem es den Workflow durchlaufen hat, auf ein oder mehrere Zielsysteme übertragen wird.

Ein Template kann in verschiedenen Modi geöffnet werden

• NEW (Dokument wird neu angelegt) • EDIT (Dokument wird erneut bearbeitet) • PREVIEW (Vorschau-Ansicht) • SAVE (Dokument wird gespeichert)

Die verschiedenen Modi können über Variablen abgefragt und unter anderem dazu verwendet werden, bestimmte Template-Elemente in verschiedenen Ansichten auszublenden bzw. anzeigen zu lassen. Ein gutes Beispiel hierfür ist das Ausblenden bestimmter Elemente (Hinweis-Texte etc.) im PREVIEW-Modus, damit die Vorschau dem fertigen Dokument entspricht.

Alle in ein Template eingegebenen Daten können über Variablen abgefragt und an anderer Stelle wieder verwendet werden. Dazu müssen alle Elemente eines Templates, wie zum Beispiel Eingabezeilen und Eingabefelder, benannt werden. Daten, die in unbenannte Felder eingegeben werden, werden nicht gespeichert und gehen somit verloren.


11. Bausteine eines Templates

Im Folgenden werden alle Bausteine beschrieben, die zum Bau eines Templates verwendet werden können. Template-Bausteine werden innerhalb der BODY-Tags zwischen dem Kommentar


am Anfang des Templates und dem Kommentar


am Ende des Templates eingefügt. Die meisten Bausteine bestehen aus reinem HTML. Es werden nur Bausteine verarbeitet, deren NAME-Attribut aus dem String

MELIN:

gefolgt von einem eindeutigen Namen bestehen. Alle in ein Template eingegebenen Informationen werden in Schlüssel-Wert-Paaren gespeichert, wobei als Schlüssel der Name des Bausteins und als Wert die eingegebene Information dient. Solche Informationen können beliebig oft im Template an anderer Stelle weiter verwendet werden. Hierzu wird an der gewünschten Stelle im Template eine Referenz auf den Namen des Bausteins gesetzt.


Ein Muster-Template Die Seite im Bearbeitungs-Modus

<html>
<head>
	<title>Ionensturm Melin Demo</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<meta name="description" content="">
	<meta name="keywords" content="">
	<link href="/melin/css/default.css" rel=stylesheet>
</head>

<BODY leftMargin=0 topMargin=0 marginheight="0" marginwidth="0" bgcolor=white>

<center>

<table border=0 cellspacing=0 cellpadding=0 width=650>
<tr>
	<td colspan=1 width=1 bgcolor=#A6AA10><img src="/melin/images/pixel/pant383.gif" width=1 height=200></td>

<td><!--MELINCONTENT_STARTS_HERE:HTML-->

<table border=0 cellspacing=0 cellpadding=0 width=648>
<tr><td>

#IF (("<!--EDIT:OP_MODE-->" EQ „EDIT“) OR ("<!--EDIT:OP_MODE-->" EQ „NEW“))
	<b>Please type your headline here</b><br> 
#ENDIF

<INPUT NAME="MELIN:title" SIZE=35 VALUE="Es werde Licht!">

<textarea name="MELIN:teaser" rows=5 cols=40>Mittlerweile werden die Tage schon wieder deutlich kuerzer ...</textarea>

<!--MELINCONTENT_ENDS_HERE:HTML-->

</td>
</tr></table>

</body>
</html


12. Umwandeln einer HTML-Seite in ein Template

Es werden mindestens drei Zeilen benötigt um eine HTML-Seite in ein Melin-Template umzubauen. Diese Zeilen müssen an bestimmten Stellen in die HTML-Seite eingesetzt werden:

<!--TEMPLATE-DESCRIPTION:my magic template-->
Definiert den Namen des Templates wie er in der Melin-Oberfläche angezeigt wird. Es ist egal an welcher Stelle im Template dieser Tag steht. Üblicherweise setzt man ihn vor oder nach dem folgenden Tag:
<!--MELINCONTENT_STARTS_HERE:HTML-->
Ein Melin-Template wird sowohl für die Erfassung der Inhalte als auch für die Generierung der späteren HTML-Seite verwendet (sofern diese benötigt wird).

Da die Eingabe der Inhalte in der Melin-Overflächer erfolgt müssen Teile des HTML-Codes beim editieren ausgeblendet werden (typischerweise alles vor <BODY> und nach </BODY>). Um die genaue Stelle zu markieren gibt es den MELICONTENT_START_HERE-Tag der den Beginn des eigentlichen Template-Codes markiert. Bei der Verwendung des Templates im EDIT-Modus wird der Code vor diesem Tag ausgefiltert, im PREVIEW und SAVE-Modus bleibt er drin.

<!--MELINCONTENT_ENDS_HERE:HTML-->
Im EDIT-Modus wird der HTML-Code nach diesem Tag ausgeblendet.


13. Variablen

An vielen Stellen des Templates ist es nützlich auf Variablen zugreifen zu können. Die folgenden Werte stehen zur Verfügung:

%M_OPMODE% Die Rückgabewerte für OP_MODE sind „NEW“, „EDIT“, „PREVIEW“, „SAVE“, abhängig vom Modus in dem das Template aufgerufen wird.

%VARIABLE% Gibt den Wert des Felds VARIABLE aus der an einer anderen Stelle im Template definiert wurde, zum Beispiel:

<TITLE>%SEITENTITEL%</TITLE>

wenn es irgendwo im Template ein Eingabefeld mit Namen SEITENTITEL gibt (s. "Einzeiliges Eingabefeld")

Hinweis: aus Gründen der Abwärtskompatibilität gibt es zwei Notationen: %VARIABLE% and

%USER:KEY% Gibt einen Wert aus dem Profil des Anwenders aus.

KEY kann einer der folgenden Werte sein: login, password oder jeder andere Wert der in der Userprofildatei DOCUMENT-ROOT/melin/WEB-INF/userdata/usertable.xml definiert ist.

%MELINCONFIG:KEY% Gibt einen Wert aus der melinconfig.xml aus (z.B. DOCUMENT-ROOT, SITE-DIR, APP-MODE)

Gibt eine "1" zurück wenn die Seite im EDIT oder NEW-Modus aufgerufen wird.


14. Einzeilige Eingabefelder (Input)

Input-Felder werden verwendet, um Informationen eingegeben, die nur eine Zeile benötigen, zum Beispiel Überschiften, Email-Adressen oder ALT-Texte für Bilder.

Die Syntax eines Input-Felds kann durch die Angabe eines Modus angepasst werden, um eingegebenen HTML-Code auf verschiedene Arten behandeln zu können. Es stehen folgende Modi zur Verfügung:

• kein Modus Dies ist der Standardmodus. Eingegebener HTML-Code wird escaped, d.h. aus "<" wird "<", aus ">" wird ">" etc. und erscheint escaped in der fertigen HTML-Seite.

• HTML-Modus In diesem Modus wird eingegebener HTML-Code wird nicht escaped, so dass die fertige HTML-Seite durch diesen Code verändert wird.

Die Syntax für ein Input-Feld ist demnach wie folgt:

Syntax ohne Modus: <INPUT NAME="MELIN:Name" TYPE="text" SIZE="30" MAXLENGTH="50">

Syntax mit HTML-Modus: <INPUT NAME="MELIN:HTML:Name" ...>

In beiden Fällen wird der eingegebene Inhalt in einer Variablen mit dem Schlüsselwort "Name" gespeichert.


15. Hyperlinks

Die Syntax für einen Hyperlink ist wie folgt:

<A HREF="MELIN:Name">Linktext</A>

Im EDIT-Modus wird ein Eingabefeld angezeigt, in das der URL des Hyperlink-Ziels eingegeben wird. Um auch den Linktext eingeben zu können, kann folgende Syntax verwendet werden:

  1. IF (("" EQ „EDIT“) OR ("" EQ „NEW“))

Link: <INPUT NAME="MELIN:link" SIZE=35 VALUE="htttp://www.melin.de">

  1. ELSE

<a href="%LINK%> <INPUT NAME="MELIN:link" SIZE=35 VALUE="htttp://www.melin.de"> </a>

  1. ENDIF

16. Mehrzeiliges Eingabefeld (Textarea)

Textareas nehmen mehrzeilige Textabschnitte auf. Hiermit hat der User die Möglichkeit, lange Fließtexte einzugeben und zu speichern.

Die Syntax is analog zum einzeiligen Eingabefeld:

<TEXTAREA NAME="MELIN:Name" COLS=40 ROWS=5 WRAP=SOFT>Text hier…</TEXTAREA>

Die Syntax für eine Textarea kann durch die Angabe eines Modus angepasst werden, um eingegebenen HTML-Code auf verschiedene Arten behandeln zu können. Es stehen folgende Modi zur Verfügung:

kein Modus Dies ist der Standardmodus. Eingegebene Zeilenschaltungen werden als Newlines (\n) in den Metainformationen gespeichert. Bei der Darstellung des Inhalts eines solchen Textfelds in der HTML-Seite werden diese Newlines automatisch in
-Tags umgewandelt und angezeigt. Eingegebener HTML-Code wird escaped (siehe oben).

HTML-Modus In diesem Modus kann der User HTML-Code in die Textarea eingeben. Eingegebene Zeilenschaltungen werden werden als Newlines (\n) in den Metainformationen gespeichert, jedoch nicht automatisch in
-Tags umgewandelt, erscheinen also auch nicht in der fertigen HTML-Seite. Sollen Zeilenschaltungen in der fertigen HTML-Seite erscheinen, müssen sie vom User explizit durch
-Tags in die Textarea eingegeben werden.

HTMLBR-Modus In diesem Modus werden eingegebene Zeilenschaltungen als Newlines (\n) in den Metainformationen gespeichert. Bei der Darstellung des Inhalts eines solchen Textfelds in der HTML-Seite werden diese Newlines automatisch in
-Tags umgewandelt und angezeigt.

Die Syntax für eine Textarea ist wie folgt:

ohne Modus: <TEXTAREA NAME="MELIN:Name" ROWS="5" COLS="40"></TEXTAREA>

mit HTML-Modus <TEXTAREA NAME="MELIN:HTML:Name" ROWS="5" COLS="40"></TEXTAREA>

mit HTMLBR-Modus <TEXTAREA NAME="MELIN:HTMLBR:Name" ROWS="5" COLS="40"></TEXTAREA>


Rich Text Modul

Templates sind ein bewährtes Mittel um Inhalte strukturiert zu erfassen. Oftmals wünschen sich die Anwender jedoch ein Werkzeug um zumindest einfache Formatierungen an einem Text vornehmen zu können.

Melin 2 stellt zu diesem Zweck das Melin Rich Text Modul zur Verfügung, ein erweitertes Text-Eingabefeld.


Der Code um dieses Modul in einem Textfeld einzubinden ist relativ einfach. Fügen Sie an einer beliebigen Stelle im Template die Zeichenkette


ein, und schon erscheint im EDIT-Modus das RichText-Flashmodul, in der Vorschau und in der gerenderten HTML-Seite erscheint der formatierte HTML-Code. Zur Zeit ist nur ein Flashmodul pro Seite möglich.

Das Flashmodul erlaubt die Formatierung des Textes, einschließlich Fett, Kursiv, Ausrichtung links, zentriert, rechts, Texteinzug, Aufzählungspunkte sowie Hyperlinks.

Zur Zeit gehen die Formatierungen bei der Copy/Paste-Übernahme aus anderen Applikation verloren. Dies ist eine Einschränkung der verwendeten Flash-Technolgogie. Sobald es hier neue Möglichkeiten gibt werden diese berücksichtigt.