Platzhalter und Formatierungen in Briefvorlagen

Sie können die Inhalte der Brief-Abschnitte der Briefvorlagen (Wertelisten > Briefvorlagen) selber bestimmen - inkl. dynamischer Platzhalter, welche zum Zeitpunkt der Brief-Erstellung mit den aktuellen Daten des Beratungsfalls ausgefüllt werden:

Briefvorlage mit Abschnitt

Mittels Platzhalter haben Sie Zugriff auf (fast) alle Daten, welche rund um den Beratungsfall verknüpft sind. Spezielle Auszeichnungs-Tags erlauben das Formatieren des Textes.

spezielle Formatierungen

Die Brief-Abschnitte unterstützen so genannte “Auszeichnungs-Tags”, um Texte zu formatieren. Auszeichnungs-Tags werden in spitzen Klammern um den auszuzeichnenden Text herum platziert (analog HTML):

Abschnitt mit Auszeichnungs-Tag

Folgende Auszeichnungs-Tags werden unterstützt:

Tag Bedeutung Beispiel
strong, b stellt Text fett dar <strong>Fetter Text</strong>
<b>Fetter Text</b>
i, em stellt Text kursiv dar <em>Kursiver Text</em>
<i>Kursiver Text</i>
u unterstreicht Text <u>unterstrichener Text</u>
super hochgestellter Text Quadratmeter: m<super>2</super>
sub tiefgestellter Text Wasser: H<sub>2</sub>O
inl_box umrandeter Text <inl_box>Dieser Text ist umrahmt</inl_box>

Beispiel-Abschnitt:

<strong>Fetter Text</strong>
<b>Fetter Text</b>
<em>Kursiver Text</em>
<i>Kursiver Text</i>
<u>unterstrichener Text</u>
Quadratmeter: m<super>2</super>
Wasser: H<sub>2</sub>O
<inl_box>Dieser Text ist umrahmt</inl_box>

Farbiger Text

Text kann auch eingefärbt werden:

Der nächste Satz ist rot: <inline color="red">Ich bin rot!</inline> Und nun wieder normal

Brief-Abschnitte: Aufzählungslisten

Ebenso wie Auszeichnungen können Aufzählungslisten definiert werden:

ungeordnete Liste:
<ul>
  <li>Eintrag 1</li>
  <li>Eintrag 2</li>
</ul>

geordnete Liste (Numerierung):
<ol>
  <li>Eintrag 1</li>
  <li>Eintrag 2</li>
</ol>

Brief-Abschnitte: Tabellen

Komplexer sind Tabellen, hier ein komplettes Beispiel:

<tgroup cols="2" width="150mm">
    <colspec column-number="1" colwidth="25mm" />
    <colspec column-number="2" colwidth="125mm" />
    <tbody>
        <row>
            <entry column-number="1"><p><strong>Wann:</strong></p></entry>
            <entry column-number="2"><p><strong>14.07.2015, 14:00 Uhr</strong></p></entry>
        </row>
        <row>
            <entry column-number="1"><p><strong>Wo:</strong></p></entry>
            <entry column-number="2"><p><strong>biz Uster</strong></p></entry>
        </row>
    </tbody>
</tgroup>

Anwenden von Platzhaltern

BISO nutzt zum Ersetzen der Platzhalter eine so genannte “Template Engine” - in diesem Fall Smarty. Smarty verlangt eine bestimmte Syntax, um Platzhalter zu definieren.

Platzhalter sind folgendermassen aufgebaut:

Definition eines Platzhalters:
{$Objektname->Eigenschaft}

als Beispiel: Name des Kunden:
{$kunde->name}

Diese können auch ergänzt werden mit zahlreichen “Modifikatoren”, welche den Wert noch verändern. Beispielsweise kann ein Datumswert in das gewünschte Format transformiert werden:

einfacher Modifikator:
{$Objekt->Eigenschaft|modifikator}

Modifikator mit Parametern:
{$Objekt->Eigenschaft|modifikator:Parameter1:Parameter2}

als Beispiel: Geburtsdatum des Kunden, im Format ‘dd.mm.YYYY’:

{$kunde->geburtsdatum:date_format:'%d.%m.%Y'}

Smarty kennt sehr viele Modifikatoren. Eine Liste der Modifikatoren finden Sie hier:

https://smarty-php.github.io/smarty/4.x/designers/language-modifiers/

Platzhalter-Beispiele

Name des Kunden                       : {$kunde->name}
Vorname des Absenders                 : {$AbsenderPerson->vorname}
Schulhaus-Name                        : {$schulhaus->name}
Kurz-Name des BIZ                     : {$AbsenderInstitution->name_kurz}

Termin-Datum, lang                    : {$termin->termin_datum|date_format:'%A, %d. %B %Y'} --> Freitag, 17. Februar 2023
Treffpunkt-Ort, alles GROSSgeschrieben: {$treffpunkt->ort|upper}
Längenbeschränkung                    : {$berater->name|truncate:20:"..."} --> max. 20 Zeichen, mit "..." abgekürzt
Umbruch nach n Zeichen                : {$beratungsfall->bemerkung|wordwrap:30:"<br />\n"}

Verfügbare Objekte für Platzhalter

In den Vorlagen sind diverse Objekte definiert, es werden im Folgenden einige aufgezählt:

Name der Variable Typ Inhalt / Bedeutung
$beratungsfall Record Beratungsfall-Objekt des aktuellen Falles
$EmpfaengerPerson Record Person-Objekt für den Empfänger
$EmpfaengerInstitution Record Institution-Objekt für den Empfänger
$AbsenderPerson Record Person-Objekt für den Absender
$AbsenderInstitution Record Institution-Objekt für den Absender
$Betreff String (Text) Der (dynamische) Betreff-Text
$mentor Record der Mentor-Personen-DS des Falles
$kunde Record der Personen-DS des Kunden
$lehrer Record der Personen-DS des Lehrers
$schulhaus Record der Institutions-DS des zugewiesenen Schulhauses
$schulstufe Record Schulstufe-Record
$schulklasse Record Schulklasse-Record
$zuw_institution Record Die Institution ‘Zugewiesen durch’
$zuw_berater Record Der Berater ‘Zugewiesen durch’
$ausbildung Record Der Ausbildungs-DS aus ‘ausbildung’
$situation Record Der Situations-DS aus ‘situation’
$bbt_fragestellung Record Der DS zur Fragestellung aus ‘bbt_b8_thema’
$bbt_ergebnis Record Der DS zum Ergebnis aus ‘bbt_b8_thema’
$modul Record Der DS zum modul
$datum Timestamp Das im Dok-Erstellen-Form eingegebene Datum
$termine Record-Array Alle Termin-DS als Objekt-Array
$ersttermin Record BfTermin-Objekt des (wahrgenommenen) Ersttermins
$brief_vorlage Record Datensatz der BriefVorlage
$anrede String (Text) Anrede-String
$kopie_an String (Text) Kopie-An-Text
$treffpunkt Record Treffpunkt-Datensatz, falls gewaehlt
$termin Record angewaehlter Termin (BfTermin)
$verschiebe_termin Record angewaehlter Verschiebe-Termin (BfTermin, bei Vorlagen, welche dies unterstützen)
$beilagen Record-Array Array mit gewählten Beilage-Records

Je nach Platzhalter-Typ können die Werte in den Briefvorlagen entsprechend eingesetzt werden:

  • String: Dies sind einfache Texte, und können als Smarty-Variable eingefügt werden. Bsp: {$Betreff}
  • Timestamp: ein Zeitstempel (Unix-Timestamp), welcher in ein Datum gewandelt werden kann: {$datum|date_format:'%d.%m.%Y'}
  • Record: Dies sind Objekte mit weiteren Eigenschaften. Beispielsweise hat das Objekt $termin die Eigenschaft termin_datum: Diese können folgendermassen verwendet werden:
    {$termin->termin_datum}, oder sogar mit Smarty-Filter-Methoden: {$termin->termin_datum | date_format:'%d.%m.%Y' }
  • Record-Array: eine Liste mit Records, welche mittels eines for-Loops ausgegeben werden kann

Eine Liste aller Objekte, die Sie in den Vorlage-Abschnitten zur Verfügung haben, können Sie sich in einem Beispiel-Brief-Abschnitt ausgeben lassen: Definieren Sie in einem Test-Brief einen Brief-Abschnitt mit folgendem Inhalt:

Alle verfügbaren Objekte:
{print_r(array_keys($smarty.template_object->smarty->tpl_vars))}

Dies gibt Ihnen eine Liste mit allen verfügbaren Objekten aus:

Platzhalter-Objekte

Die einzelnen Eigenschaften der Objekte können Sie ebenfalls ausgeben (siehe nächster Abschnitt).

Eigenschaften der Platzhalter

Eine komplette Liste aller Eigenschaften der oben gezeigten Objekte ginge hier zu weit - dies sind mehrere Hundert verschiedener Eigenschaften. Sie können jedoch jederzeit in einer Vorlage die verfügbaren Eigenschaften ausgeben lassen - in dem Sie in einer Test-Briefvorlage folgenden Abschnitt definieren:

Eigenschaften des $kunde-Objektes:
<p>
{$kunde->getJsonObject()|print_r}
</p>

Dies liefert Ihnen im Brief folgende Ausgabe:

Platzhalter-Dump

Sie sehen hier die verfügbaren Eigenschaften sowie der aktuelle Wert der Eigenschaft.