Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,075 of 9,075 pages
About the help in other languages
All help pages

Ein Template von Smarty umziehen

Eine Anleitung zum Portieren - ein typisches Listen-Template aus Smarty in drei Schritten in die Template-Sprache übertragen (Variablen, Daten aus fetch, die Schleife mit Bedingungen, Links, Daten und Maskierung), jeder…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/template-language/moving-from-smarty.md

On this page

This page is a translation. Read the English original

Ein Template von Smarty umziehen

Diese Seite portiert ein kleines Template aus Smarty Schritt für Schritt in die Template-Sprache und endet mit einer Checkliste für Ihre eigenen Templates. Jeder Schritt wurde auf einer Entwicklungsinstallation gegen die Startseite „Fit & Healthy“ (Knoten 89) gerendert.

Exponential führt Smarty-Templates selbst aus: Ein Design kann Smarty-5-Templates (.stpl) neben seinen .tpl-Templates enthalten, mit jedem Operator, jeder Fetch-Funktion, jeder Template-Funktion, jeder Override-Regel und jedem Cache des Template-Systems. Wenn Sie lieber weiter Smarty schreiben, lesen Sie Von .tpl zu .stpl umziehen und (Englisch) Smarty templates (.stpl) next to .tpl; die Konverter wandeln auch in beide Richtungen um.

Exponential führt Smarty-Templates selbst aus: Ein Design kann Smarty-5-Templates (.stpl) neben seinen .tpl-Templates enthalten, mit jedem Operator, jeder Fetch-Funktion, jeder Template-Funktion, jeder Override-Regel und jedem Cache des Template-Systems. Wenn Sie lieber weiter Smarty schreiben, lesen Sie Von .tpl zu .stpl umziehen und (Englisch) Smarty templates (.stpl) next to .tpl; die Konverter wandeln auch in beide Richtungen um.

Inhalt

  1. Das Template aus Smarty
  2. Schritt 1: Variablen
  3. Schritt 2: Die Daten kommen aus fetch
  4. Schritt 3: Schleife, Links, Daten und Maskierung
  5. Checkliste
  6. Verwandte Seiten

Das Template aus Smarty

Eine Liste der neuesten Seiten einer Sektion, wie sie in Smarty aussehen könnte. Das PHP, das sie rendert, weist $site und $pages zu. Das ist Smarty, zum Vergleich; es wurde hier nicht ausgeführt:

{assign var=limit value=3}
<h2>{$site.name|escape}</h2>
{if $pages|@count == 0}
<p>No pages yet.</p>
{else}
<ul>
{foreach from=$pages item=page}
  <li class="{cycle values='odd,even'}"><a href="{$page.url}">{$page.name|truncate:30|escape}</a>
      {$page.published|date_format:'%Y-%m-%d'}</li>
{/foreach}
</ul>
{/if}

Schritt 1: Variablen

Aus {assign} wird {def}. Mehrere Variablen lassen sich in einem Tag definieren, über mehrere Zeilen. Statt $site vom PHP zu bekommen, holt das Template den Knoten selbst. Aus escape wird wash:

{def $site = fetch( 'content', 'node', hash( 'node_id', 89 ) )
     $limit = 3}
<h2>{$site.name|wash}</h2>

Ausgabe:

<h2>Fit &amp; Healthy</h2>

Schritt 2: Die Daten kommen aus fetch

Die Liste ist ein Fetch content/list mit dem Elternknoten, dem Limit und der Sortierung. Die Prüfung der Anzahl nutzt den Operator count; es gibt kein @ und kein ==:

{def $site = fetch( 'content', 'node', hash( 'node_id', 89 ) )
     $limit = 3
     $pages = fetch( 'content', 'list', hash( 'parent_node_id', $site.node_id,
                                              'limit', $limit,
                                              'sort_by', array( 'published', false() ) ) )}
<h2>{$site.name|wash}</h2>
<p>{$pages|count} of {$site.children_count} pages</p>

Ausgabe:

<h2>Fit &amp; Healthy</h2>
<p>3 of 16 pages</p>

Das fertige Template. Was sich geändert hat:

  • Aus {if $pages|@count == 0} wird {if $pages|count|eq( 0 )}.
  • Aus {foreach from=$pages item=page} wird {foreach $pages as $page}.
  • Aus {cycle values='odd,even'} wird der Schleifenparameter sequence array( 'odd', 'even' ) as $row.
  • Ein Link ist der url_alias des Knotens, durch ezurl geleitet, das den Pfad des Siteaccess und die Anführungszeichen hinzufügt: href={$page.url_alias|ezurl}.
  • Aus truncate:30 wird shorten( 30 ), und aus escape wird wash (nach dem Kürzen, damit keine Entität abgeschnitten wird).
  • Aus date_format wird datetime( 'custom', ... ) auf dem Zeitstempel published des Objekts.
  • {undef} am Ende entfernt die Variablen; in einem Template einer vollständigen Ansicht werden mit {def} angelegte Variablen am Ende der Datei ohnehin entfernt.
{def $site = fetch( 'content', 'node', hash( 'node_id', 89 ) )
     $limit = 3
     $pages = fetch( 'content', 'list', hash( 'parent_node_id', $site.node_id,
                                              'limit', $limit,
                                              'sort_by', array( 'published', false() ) ) )}
<h2>{$site.name|wash}</h2>
{if $pages|count|eq( 0 )}
<p>No pages yet.</p>
{else}
<ul>
{foreach $pages as $page sequence array( 'odd', 'even' ) as $row}
  <li class="{$row}"><a href={$page.url_alias|ezurl}>{$page.name|shorten( 30 )|wash}</a>
      {$page.object.published|datetime( 'custom', '%Y-%m-%d' )}</li>
{/foreach}
</ul>
{/if}
{undef $site $limit $pages}

Ausgabe:

<h2>Fit &amp; Healthy</h2><ul>  <li class="odd"><a href="/slash-quotes">Slash Quotes</a>
      2026-10-17</li>  <li class="even"><a href="/exponential-live">Tour</a>
      2026-10-05</li>  <li class="odd"><a href="/fit-healthy-site-info">Fit &amp; Healthy site info - [...</a>
      2026-08-31</li></ul>

Die Liste zeigt, was auf einer Entwicklungsinstallation zuletzt veröffentlicht war, als diese Seite entstand; auf Ihrer Website werden die Namen also andere sein.

Checkliste

SmartyTemplate-Sprache
{assign var=x value=...}, {$x = ...}{def $x = ...}, später {set $x = ...}
{$a + $b}, {$a * 2}{sum( $a, $b )}, {$a|mul( 2 )}
==, !=, >, <, >=, <=eq, ne, gt, lt, ge, le
&&, ||, !and( ... ), or( ... ), not( ... )
|default:'x'first_set( $var, 'x' )
|escape, |escape:'url'|wash, |rawurlencode
|truncate:n|shorten( n )
|upper, |lower, |capitalize|upcase, |downcase, |upword
|date_format:'...'|datetime( 'custom', '...' ) oder |l10n( 'shortdate' )
|@count|count
{foreach from=$a item=i key=k}{foreach $a as $k => $i}
{foreachelse}{if $a|count}...{else}...{/if} um die Schleife
{cycle values='a,b'}sequence array( 'a', 'b' ) as $s
{section name=i loop=$a}{foreach}, oder {for 0 to ... as $i} für Bereiche
{include file='x.tpl'}{include uri='design:x.tpl'}
{capture name=x}{set-block variable=x}
{extends}, {block}Overrides und das Pagelayout
{php}ein Operator oder eine Fetch-Funktion in einer Erweiterung
{$smarty.get.x}ezhttp( 'x', 'get' ), vor der Ausgabe gewaschen

Rendern Sie das Template nach dem Portieren mit eingeschalteter Debug-Ausgabe und lesen Sie die Warnungen: Ein Operator, der nicht existiert, und ein set auf eine nie definierte Variable scheitern beide stillschweigend in der Seite (siehe Smarty und die Template-Sprache: die Unterschiede im Detail).

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x