Skip to content

Doc template_keys

KoernerWS edited this page Sep 3, 2011 · 1 revision

Die neuen Templatekeys

Hintergrund

Es ist immer sehr anstrengend gewesen, die Anzahl der Explodes beim Template zu zählen, bis zu dem Teil den man dann auch wirklich ausgeben möchte. Hier passieren oft Fehler und es dauert einfach länger. Deswegen wurde das folgende Feature umgesetzt.

Hinweis: Dieses Feature ist komplett abwärtskompatibel. Solltest du Seiten/Module entdecken, die seit diesem Feature nicht mehr funktionieren, eröffne bitte ein Ticket im Issue Tracker.

{EXPLODE "my_key"}

Es ist jetzt möglich, sogenannte "TemplateKeys" im Template zu spezifizieren. Mit diesem Code

{EXPLODE "my_key"}

weist man beispielsweise dem folgenden Teil des Templates den TemplateKey my_key zu. In den Ausgabefunktionen (set_ar_out, set_out) etc. kann dann gemütlich auf diese Keys zugegriffen werden.

Ein Beispiel

Die Awardseite wurde als Erstes auf das neue Feature angepasst. Früher sah include/templates/awards.htm so aus:

<table width="100%" border="0" cellpadding="5" cellspacing="1" class="border">
    <tr class="Chead">
        <td><strong>Awards</strong></td>
    </tr>
{EXPLODE}
    <tr class="{class}">
        <td>
            {_lang_for} <b>{team}</b><br />
            {bildutime}
            {_lang_place}: {platz}<br />
            {_lang_whatfor}: {wofur}<br />
            {_lang_desc}: {text}
        </td>
    </tr>
{EXPLODE}
</table>

Mit dem neuen Feature können den {EXPLODE} wie folgt TemplateKeys zugewiesen werden:

<table width="100%" border="0" cellpadding="5" cellspacing="1" class="border">
    <tr class="Chead">
        <td><strong>Awards</strong></td>
    </tr>
{EXPLODE "tabelle"}
    <tr class="{class}">
        <td>
            {_lang_for} <b>{team}</b><br />
            {bildutime}
            {_lang_place}: {platz}<br />
            {_lang_whatfor}: {wofur}<br />
            {_lang_desc}: {text}
        </td>
    </tr>
{EXPLODE "ende"}
</table>

Dem ersten Explode wurde also der Templatekey tabelle zugewiesen, dem zweiten ende.

Müssen wir jetzt auch die awards.php anpassen, damit das ganze wieder funktioniert? Nein, grundsätzlich nicht, da das alte System auch weiterhin funktioniert, das also von 0 anfängt zu zählen, bis 1, 2, 3. Dieser Code würde also weiterhin funktionieren:

<?php

    ...

        $row[ 'class' ] = $class;
        $tpl->set_ar_out( $row, 1);
    }
    $tpl->out(2);
?>

Da wir jetzt die neuen Templatekeys verwenden, können wir das ganze so umschreiben:

<?php

    ...

        $row[ 'class' ] = $class;
        $tpl->set_ar_out( $row, "tabelle");
    }
    $tpl->out("ende");
?>

Vorteile

Die Vorteile dieses Features:

  • Kein lästiges Abzählen der Explodes mehr: Einfach TemplateKey zuweisen und in den bisher gewohnten Funktionen verwenden
  • Dadurch passieren weniger Fehler beim coden
  • Der Code wird außerdem lesbarer: Man sieht, dass hier die "tabelle" ausgegeben wird und hier das "ende".

Viel Spaß mit diesem neuen Feature!

TO DO

Die jetzigen Addons und Module auf das neue System umbauen.

Da wir abwärtskompatibel sind, kann man sich damit ruhig Zeit lassen.

Außerdem: Testen!: um zu sehen, ob es grundsätzlich funktioniert, index.php?awards aufrufen, da es hier schon eingesetzt wurde.