Hier erst einmal ein Template-Code für die Darstellung von Personenprofilen, hier der Vereinsvorstände usw..
Erläuterungen weiter unten, die grünen Kommentare dienen als Markierungen dafür.
<!-- (1) -->
<!-- ifSet: Zwischenüberschrift; -->
<div class="subcolumns">
<div class="c25l"><div class="subcl"></div></div>
<div class="c75r"><div class="subcr"><h2 class="subtemplate">
<!-- Text: Zwischenüberschrift; strip_tags; nl2br; --></h2></div></div>
</div>
<br />
<!-- /ifSet -->
<!-- (2) -->
<!-- ifSet: Name; -->
<div class="subcolumns">
<div class="c25l"><div class="subcl">
<!-- (3) --><!-- ifSet: Portraitbild; --><img class="subcol25" src="../_data/
<!-- Image: Portraitbild; file; -->" alt="Bild »
<!-- Text: Name; strip_tags; -->«">
<!-- /ifSet -->
</div></div>
<!-- (/2) -->
<!-- (4) -->
<div class="c75r"><div class="subcr">
<h3 class="subtemplate">
<!-- Text: Name; strip_tags; --></h3>
<!-- ifSet: Funktion; --><h4>
<!-- Text: Funktion; strip_tags; --></h4>
<!-- /ifSet -->
<!-- (5) --><div class="
<!-- ifNotSet: eMail-Adresse; --><!-- ifNotSet: URL; -->Destroy
<!-- /ifNotSet --><!-- /ifNotSet -->Block">
<!-- ifSet: eMail-Adresse; --><div><b>E-Mail:</b> <a href="mailto:
<!-- Text: eMail-Adresse; strip_tags; -->">
<!-- Text: eMail-Adresse; strip_tags; --></a></div>
<!-- /ifSet -->
<!-- ifSet: URL; --><div><b>Webseite:</b> <a href="
<!-- Text: URL; strip_tags; -->" target="_blank">
<!-- Text: URL-Bezeichnung; strip_tags; --><!-- ifNotSet: URL-Bezeichnung; --><!-- Text: URL; strip_tags; --><!-- /ifNotSet --></a></div>
<!-- /ifSet -->
</div>
<!-- (/5) -->
<!-- (6) -->
<div class="
<!-- ifNotSet: Telefon; --><!-- ifNotSet: Telefon, mobil; --><!-- ifNotSet: Fax; -->Destroy
<!-- /ifNotSet --><!-- /ifNotSet --><!-- /ifNotSet -->Block">
<!-- ifSet: Telefon; --><div><b>Tel.:</b>
<!-- Text: Telefon; strip_tags; --></div>
<!-- /ifSet -->
<!-- ifSet: Telefon, mobil; --><div><b>Mobiltel.:</b>
<!-- Text: Telefon, mobil; strip_tags; --></div>
<!-- /ifSet -->
<!-- ifSet: Fax; --><div><b>Fax:</b>
<!-- Text: Fax; strip_tags; --></div>
<!-- /ifSet -->
</div>
<!-- (7) -->
<!-- ifSet: Fachbereich; --><div class="Block"><b>Fachbereich:</b>
<!-- Text: Fachbereich; strip_tags; --></div>
<!-- /ifSet -->
<!-- (8) -->
<!-- ifSet: Freitext; --><br /><div>
<!-- HTML: Freitext; --></div>
<!-- /ifSet -->
<br />
</div> </div>
<!-- (/4) -->
</div>
<br />
<!-- /ifSet -->
(1): Die Redakteure sollen nicht nur die Personendaten eingeben können, sondern - falls gewünscht - auch im selben Template eine Zwischenüberschrift, um bspw. die Vorstände von den Kuratoriumsmitgliedern abzusetzen. Im angehängten Bild ist dies "Mitglieder des Vorstandes".
Zu den Rahmenbedingungen muss vielleicht noch gesagt werden, dass das Layout der Website auf YAML beruht (vgl.
http://www.yaml.de), mit c25l wird eine linke Spalte von 25% der verfügbaren Breite, mit c75r wird eine rechte Spalte von 75% der im Contentbereich verfügbaren Breite erstellt.
Die Zwischenüberschrift soll in der rechten, breiteren Spalte stehen.
(2): Alles, was ab hier folgt, wird nur ausgegeben, wenn auch das Feld "Name" ausgefüllt wurde. So kann ein Artikel auch nur aus einer Zwischenüberschrift bestehen.
Geschlossen wird dieses ifSet erst ganz am Ende des Templates!
(3): ifSet:Portraitbild ist das erste verschachtelte ifSet, denn es befindet sich innerhalb des ifSet:Name. Mit dem Standard-Parser von ConPresso wäre dies so nicht möglich.
Hier wird das Portraitbild in der linken 25%-Spalte ausgegeben, mit einer entsprechenden Klasse versehen, im alt-Text wird der Name eingetragen. Erfahrungsgemäß sind die Redakteure im Alltag ja zu faul, um alt-Texte beim Hochladen einzugeben. Außerdem bekommt auf diese Weise auch das Dummybild (s. angehängter Screenshotausschnitt) einen sinnvollen alt-Text. Weiterer Vorteil bei mehrsprachigen Websites: der Text "Bild" kann durch eine entsprechende Übersetzung in einem sprachspezifischen Template ersetzt werden.
(/2): Ende der 25%-Spalte.
(4): Es folgt jetzt in der rechten 75%-Spalte die eigentliche Personenbeschreibung.
(5): Nach einer Zeile mit dem Namen und einer fakultativen Zeile mit der Funktionsbeschreibung der Person, kommt jetzt ein Block mit E-Mail-Adresse und URL. Sowohl die Zeile mit der E-Mail-Adresse als auch die Zeile mit der URL sind fakultativ.
Die beiden ifNotSets bewirken, dass <div class="DestroyBlock"> stehen bleibt, falls (und nur dann) beide Angaben fehlen. Ist auch nur eine der beiden Angaben ausgefüllt worden, bleibt <div class="Block"> stehen. Die Klasse "Block" bewirkt, dass der Block per CSS vertikal von vorhergehenden Daten abgesetzt wird (über margin-top/margin-bottom). Für die Klasse DestroyBlock ist dagegen nichts per CSS definiert, der DIV-Container hat keinen Inhalt, er wird nicht vertikal abgesetzt, sodass kein zusätzlicher Leerraum entsteht.
(/5): Ende dieses Blockes.
(6): Hier beginnt ein
(5) entsprechender Block mit den drei Inhalten Telefon-, Molbiltelefon und Faxnummer.
(7) und
(8): Muss ich, glaub' ich, eigentlich nicht weiter erläutern. Hier erfolgt einfach die Beschreibung des Fachbereichs der Person und noch ein Freitext für weitere, frei formulierte Beschreibungen.
(/4): Ende der 75%-Spalte.