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

Template-Operatoren schreiben

Eigene Template-Operatoren hinzufügen - die Autoload-Registrierungsdatei, die Operator-Klasse mit operatorList, namedParameterList und modify, Eingabe per Pipe und per Parameter, Maskierung und wann ein Operator das…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/creators/app-creators/template-operators.md

On this page

This page is a translation. Read the English original

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

  1. Registrierung
  2. Die Operator-Klasse
  3. Eingabe und Ausgabe
  4. Regeln
  5. Wann Sie keinen Operator schreiben sollten

Registrierung

# extension/expdemo/settings/site.ini.append.php
<?php /* #?ini charset="utf-8"?
[TemplateSettings]
ExtensionAutoloadPath[]=expdemo
*/ ?>
<?php
// 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

<?php
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 $operatorValue an; setzen Sie ihn auf das Ergebnis.
  • Benannte Parameter kommen in $namedParameters an, mit angewendeten Standardwerten.
  • Ein Operator, der ohne Eingabe verwendet wird ({expdemo_money( 12 )}), erhält null als $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 wash maskieren. Wenn Sie doch HTML zurückgeben müssen, maskieren Sie jeden Teil der Eingabe mit htmlspecialchars().
  • 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

BedarfBesser
Daten leseneine Fetch-Funktion (Eine eigene Fetch-Funktion schreiben)
Zeichenketten formatierendie mitgelieferten String-Operatoren (String-Template-Operatoren)
RechteprüfungenTemplate-Operatoren für Rollen und Richtlinien
Markup, das in vielen Templates wiederverwendet wirdein {include} eines Template-Teils

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