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

Templates zwischen Template-Engines umwandeln

Der Befehlsraum exp:template:convert wandelt Templates zwischen Exponential-Templates (.tpl), Smarty-Templates (.stpl) und Twig-Templates (.twig) in jede Richtung um - die sechs benannten Befehle, der allgemeine Befehl…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/template-language/converting-between-template-engines.md

On this page

This page is a translation. Read the English original

Templates zwischen Template-Engines umwandeln

Exponential rendert drei Arten von Templates: Exponential-Templates (.tpl), Smarty-Templates (.stpl) und Twig-Templates (.twig, .html.twig). Ein Befehlsraum wandelt zwischen ihnen in jede Richtung um, ein einzelnes Template oder ein ganzes Design. Dieses Kapitel ist für Entwickler und Designer, die Templates von einer Engine in eine andere bringen; die Ausgabe unten haben die Befehle auf einer Entwicklungsinstallation ausgegeben.

Die Engines

./console exp:template:engines
AVAILABLE    tpl (Exponential templates) Exponential 6.0.15stable
AVAILABLE    stpl (Smarty templates) Smarty 5.8.5
AVAILABLE    twig (Twig templates)  Twig 3.30.0
PASS 3 engines available

Eine Engine heißt tpl (auch exp, exponential), stpl (auch smarty) oder twig.

Die Befehle

BefehlWandelt um
exp:template:convert:tpl-to-stpl, exp:template:convert:stpl-to-tpl.tpl und .stpl
exp:template:convert:tpl-to-twig, exp:template:convert:twig-to-tpl.tpl und .twig
exp:template:convert:stpl-to-twig, exp:template:convert:twig-to-stpl.stpl und .twig, über .tpl in einem Lauf
exp:template:convert --from-engine=<e> --to-engine=<e>jede Richtung
exp:template:convert:diff --file=<Datei> --to-engine=<e> [--against=<Datei>]gibt eine Umwandlung aus, oder ihren Unterschied zu einer Datei; schreibt nichts

Die Optionen jeder Richtung:

OptionBedeutung
--from=<Verz>ein Design-Verzeichnis: jedes Template der Quell-Engine darunter (templates/ und override/templates/)
--to=<Verz>wohin die umgewandelten Dateien kommen, an dieselbe Stelle darunter (Standard: neben die Quellen)
--file=<Datei>nur ein Template
--dry-runsagen, was geschrieben würde, nichts schreiben
--forceein Ziel ersetzen, das von Hand geändert oder geschrieben wurde
-s <Siteaccess> --override-ini=<Datei>die Override-Regeln dieses Siteaccess für die umgewandelten Dateien schreiben
--twig-suffix=.html.twigdie Endung geschriebener Twig-Templates (Standard .twig)

Exit-Codes: 0 PASS; 1 FAIL (ein Template konnte nicht gelesen, umgewandelt, geprüft oder geschrieben werden); 2 falsche Optionen; 3 die Umwandlung ist nicht verfügbar (die Bibliothek einer Engine fehlt).

Durch alle drei Engines

Eine .tpl, umgewandelt in .stpl:

./console exp:template:convert:tpl-to-stpl --from=<design> --to=<design>_stpl
PASS tpl->stpl 2 templates: 2 written, 0 unchanged, 0 skipped, 0 errors; 0 notes in 0 templates
{$items = fetch('content', 'list', ['parent_node_id' => $node.node_id, 'limit' => 3])}
<ul>{foreach $items as $child}
    <li>{$child.name|wash}</li>{/foreach}
</ul>{if ($items|exp_count)|gt:2}
{'More'|i18n:'design/standard/content'}{/if}

und die .stpl weiter in .twig (über .tpl, in einem Lauf):

./console exp:template:convert:stpl-to-twig --from=<design>_stpl --to=<design>_twig
PASS stpl->twig 2 templates: 2 written, 0 unchanged, 0 skipped, 0 errors; 0 notes in 0 templates

Die .twig ist Zeile für Zeile derselbe Text, den tpl-to-twig aus der .tpl schreibt: jede Richtung behält, was das Template ausgibt, deshalb lassen sich die Engines verketten.

Von Hand geänderte Dateien

Jede geschriebene Datei endet mit einem Markierungskommentar, der die Richtung, die md5 des umgewandelten Texts und die Quelle nennt:

{# exp:template:convert stpl->twig md5:543e672301da17d7166e2c1ac83c7696 from templates/list.stpl -- generated; a file changed by hand is not replaced without --force #}

Ein zweiter Lauf schreibt nur, was sich geändert hat (sonst unchanged), und lässt ein Ziel ohne Markierung oder eines, das seit dem Schreiben geändert wurde, in Ruhe (SKIP ... --force replaces it). Mit --override-ini zeigt die Regel eines übersprungenen Templates weiterhin auf es.

NOTE-Zeilen

Ein Konstrukt ohne genaue Entsprechung in der Ziel-Engine wird so nah wie möglich geschrieben und in einer NOTE-Zeile der Fehlerausgabe genannt; was sich gar nicht schreiben lässt, bleibt als Kommentar erhalten:

{* TWIG (not converted: the Twig node MacroDeclarationNode has no template form) line 1 *}{$user_name|upcase}
NOTE macro.twig: {% macros %} have no template form

Das Ergebnis prüfen

Jedes umgewandelte Template wird geprüft (von seiner Engine kompiliert), bevor es geschrieben wird. Prüfen Sie nach einem ganzen Design mit ./console exp:template:check --design-dir=<Verz> --level=strict und vergleichen Sie Seiten, die aus dem alten und dem neuen Design gerendert werden.

Wie es weitergeht

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