Template-Operatoren schreiben
Diese Seite richtet sich an Anwendungsentwickler, die Templates einen neuen Operator geben, etwa
{$price|expdemo_money( 'EUR' )}. Ein Operator ist eine PHP-Klasse, die in autoloads/eztemplateautoload.php der
Erweiterung registriert ist. Das RAD-Werkzeug Template-Erweiterung (/setup/templateoperator) schreibt Ihnen einen
funktionierenden Operator (RAD-Werkzeuge).
Inhalt
Registrierung
# extension/expdemo/settings/site.ini.append.php
[TemplateSettings]
ExtensionAutoloadPath[]=expdemo
*/ ?>
// extension/expdemo/autoloads/eztemplateautoload.php
$eZTemplateOperatorArray = array();
$eZTemplateOperatorArray[] = array(
'script' => 'extension/expdemo/autoloads/expdemotemplateoperators.php',
'class' => 'expDemoTemplateOperators',
'operator_names' => array( 'expdemo_money' ) );Die mitgelieferte Erweiterung ezstarrating registriert ihre Operatoren auf dieselbe Weise
(extension/ezstarrating/autoloads/eztemplateautoload.php).
Die Operator-Klasse
class expDemoTemplateOperators
{
function operatorList()
{
return array( 'expdemo_money' );
}
function namedParameterPerOperator()
{
return true;
}
function namedParameterList()
{
return array( 'expdemo_money' => array(
'currency' => array( 'type' => 'string', 'required' => false, 'default' => 'EUR' ) ) );
}
function modify( $tpl, $operatorName, $operatorParameters, $rootNamespace, $currentNamespace, &$operatorValue, $namedParameters )
{
switch ( $operatorName )
{
case 'expdemo_money':
$operatorValue = number_format( (float)$operatorValue, 2 ) . ' ' . $namedParameters['currency'];
break;
}
}
}Eingabe und Ausgabe
- Der per Pipe übergebene Wert (
$price|expdemo_money) kommt in$operatorValuean; setzen Sie ihn auf das Ergebnis. - Benannte Parameter kommen in
$namedParametersan, mit angewendeten Standardwerten. - Ein Operator, der ohne Eingabe verwendet wird (
{expdemo_money( 12 )}), erhältnullals$operatorValue; deklarieren Sie den Wert als Parameter, wenn er so verwendet wird.
Regeln
- Geben Sie Werte zurück, kein HTML: Lassen Sie das Template sie ausgeben und mit
washmaskieren. Wenn Sie doch HTML zurückgeben müssen, maskieren Sie jeden Teil der Eingabe mithtmlspecialchars(). - Halten Sie Operatoren schnell und frei von Nebenwirkungen; sie laufen bei jedem Rendern und innerhalb von Cache-Blöcken.
- Stellen Sie neuen Operatornamen den Namen Ihrer Erweiterung voran (
expdemo_...), damit sie nie kollidieren. - Generieren Sie die Autoloads neu und leeren Sie die Template-Caches, nachdem Sie einen hinzugefügt haben.
Wann Sie keinen Operator schreiben sollten
| Bedarf | Besser |
|---|---|
| Daten lesen | eine Fetch-Funktion (Eine eigene Fetch-Funktion schreiben) |
| Zeichenketten formatieren | die mitgelieferten String-Operatoren (String-Template-Operatoren) |
| Rechteprüfungen | Template-Operatoren für Rollen und Richtlinien |
| Markup, das in vielen Templates wiederverwendet wird | ein {include} eines Template-Teils |
Verwandte Seiten
- Template-Funktionen und Includes
- Muster für Template-Operatoren
- Templates und Design
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
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.