Zwischen TPLE und Smarty gibt es gewaltige Unterschiede, völlig klar , sind ja auch komplett andere Systeme.
TPLE kann auf jede Menge Modifikatoren und auch Tricks die man bei Smarty benötigt verzichten.
Ein paar Dinge jedoch sind unter PHP in der Schreibweise etwas zu kompliziert für Templates.
Nehmen wir mal die Sprachen die in der config.php definiert werden un eine beliebige anzahl aufweisen kann:
$config['sprachen']=array('de','en');
Im Verwaltungsbereich haben wir dann öfters mal eine Auswahl wenn es um Sprachen geht.
So sieht etwas z.B. in Smarty aus.
{foreach from=$config.sprachen item=entry}
<option value="{$entry}" {if $sprache eq $entry}selected="selected"{/if}>{$entry}</option>
{/foreach}
Unter TPLE gibt es mehrere Möglichkeiten:
1.
<?php
foreach ($this->VARS['config']['sprachen']) as $entry) {
echo '<option value="' . $entry . '"';
if ($this->ret('sprache') == $entry)
echo 'selected="selected"';
echo'>' . $entry . '</option>';
}
?>
2.
<?php
foreach ($this->ret('config.sprachen') as $entry) {
echo '<option value="' . $entry . '"';
if ($this->ret('sprache') == $entry)
echo 'selected="selected"';
echo'>' . $entry . '</option>';
}
?>
Besonders häufig geht es um Ausgabe von Ergebnissen aus einer DB Abfrage.
Das Ergebnis liegt dann in der Regel in einem Array von Arrays vor und jede Zeile bzw. Wert wird dann normal so innherhalb einer Schleife angesprochen:
foreach ($this->VARS['news'] as $row) {
echo $row['spaltenname'];
}
Unter TPLE kann man dann aber folgendes machen:
foreach ($this->VARS['news'] as $this->VARS['row']) {
$this->show('row.spaltenname');
}
Die Schreibweise wird damit einfacher denn eckige Klammern mit Tüddelchen sind nicht jedermanns Sache.
Das gleiche funktioniert natürlich auch mit der Funktion ret.