3.1 Templates

Etwas grundlegendes vorweg: Das Formular-Modul benutzt die gleichen Platzhalter wie ein normales Template, diese werden lediglich umgewandelt. Aus <!-- Text: Name; --> wird automatisch ein Formularfeld  mit folgendem Code: <input type="text" name="Name" />. Die mit diesem Feld versendeten Informationen landen bei Erfolg im Artikel als "Name" und werden durch den Platzhalter <!-- Text: Name; --> wieder ausgegeben. Somit ist das Formular gleichzeitig das Artikeltemplate!
Daher sollte man sich mit der Erstellung von Artikeltemplates bereits auskennen!

Die drei Bereiche des Artikeltemplates werden wie folgt genutzt:

Rubrikseite
dient für die Übersichtsseite, mit der die erfolgten Einträge betrachtet werden können.

Artikelseite
ist zugleich Definition des Formulares (wird bei der Ausgabe von den notwendigen FORM-Tags umgeben) und auch der Bestätigungsseite für den Formularnutzer und der Detailseite, die sich von der Rubrikseite aus aufrufen lässt.

Javascript/PHP
definiert das zu versendene Mail (wenn Mailversand gewünscht wird). Dies sollte so definiert werden, daß es als Plain-Text-Mail (also ohne HTML-Tags) versendet werden kann.

Die Funktion und das Erscheinungsbild der Formularfelder wird durch die zusätzlich anzugebenden Parameter bestimmt. Ohne Angaben von Parametern funktioniert das Formular auch, ist aber weniger zweckdienlich.

Lesen Sie hierzu das Kapitel 3.2 Platzhalter und Parameter.

Platzhalter Übersicht

<!-- Text: Platzhaltername; --> und
<!-- HTML: Platzhaltername; -->
werden als normale Eingabefelder ausgegeben. Der Unterschied liegt in der Behandlung von HTML-Entities (Sonderzeichen wie <, > und & etc.)

<!-- Image: Platzhaltername; -->
erzeugt ein Upload-Feld. Die hochgeladene Datei wird darauf geprüft, ob es sich um ein Bild handelt, im System eingetragen und dann dem Artikel zugeordnet.

<!-- File: Platzhaltername; -->
erzeugt ein Upload-Feld. Die hochgeladene Datei wird darauf geprüft, ob es sich um eine Datei (kein Bild!) handelt, im System eingetragen und dann dem Artikel zugeordnet.

<!-- Url: Platzhaltername; -->
erzeut ein normales Textfeld, dessen Inhalt als URL gespeichert und dem Artikel zugeordnet wird. Für dieses Feld ist eine Prüfung mittels urlcheck möglich.

Bedingte Ausgaben

Da der "Artikelseite"-Bereich des Templates sowohl für die Formularerstellung als auch für die Artikelauswabe zuständig ist, kann durch ifSet/ifNotSet-Bedingungen die Ausgabe an den jeweiligen Anwendungsfall angepasst werden. Hierzu wird "mod_form" mit Content belegt, wenn das Forular gezeigt wird. Eine bedingte Ausgabe könnte also so aussehen:

<!-- ifSet: mod_form; -->Formularseite<!-- /ifSet -->
<!-- ifNotSet: mod_form; -->Artikelseite<!-- /ifNotSet -->

Außerdem lassen sich durch die aufrufende URL neben Inhalten auch Bedingungen definieren, die dann ausgewertet werden können. Dies muß explizit erfolgen, weil ansonsten ja in einem Formular grundsätzlich KEINE Inhalte vorhanden sind, bevor es ausgefüllt wird und außerdem durch das Modul diese nicht vorhandenen Inhalte durch ein Eingabefeld ersetzt werden, so daß im Gunde immer Inhalt vorhanden ist.

Vorgehensweise:

  1. die URL, die die Werte übergibt, wird ergänzt durch ein &ifsetFELDNAME=true
    Damit weiß das Formular, was auf Werte geprüft werden muß (das muß so sein, weil sonst JEDE fehlende Eingabe im Formular das zugehörige Feld verschwinden lassen würde, was ein Formular für die Dateneingabe unbrauchbar machen würde).
  2. Auch im Formular selbst muß dies weitergetragen werden, damit bei mehrstufiger Bearbeitung diese Info nicht verlorengeht, also muß ein Platzhalter in der Form <!-- Text: ifsetFELDNAME; type=hidden; value=true; --> hinein.
  3. Nun kann also mittels
    <!-- ifSet: FELDNAME; -->...<!-- /ifSet --> oder <!-- ifNotSet: FELDNAME; -->...<!-- /ifNotSet -->
    die bedingte Augabe realisiert werden.

Vorbelegung von Feldern mittels URL

Für Produktanfragen, Online-Anmeldungen und ähnliches lassen sich mittels URL Felder mit Werten vorbelegen. Dies lässt sich entweder fest codieren oder auch direkt aus dem Artikeltemplate des aufrufenden Artikels mittels Platzhaltern erstellen.

Beispiel:

<a href="../mod_form/index.php?Produktnummer=<!-- Text: Produktnummer; -->&Bezeichnung des Artikels=<!-- Text: Bezeichnung des Artikels; -->">Anfrage erstellen</a>

Hiermit werden die Felder "Produktnummer" und "Bezeichnung des Artikels" vorbelegt. Um Änderungen zu verhindern kann zusätzlich im Formular der Parameter type=hidden gewählt werden.