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

Operatoren registrieren

Alle Wege, auf denen ein Template-Operator registriert wird - eztemplateautoload.php in AutoloadPathList und ExtensionAutoloadPath, die Schlüssel des Eintrags, template.ini PHPOperatorList, owsimpleoperator.ini -, wie…

Download as PDF

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

On this page

This page is a translation. Read the English original

Operatoren registrieren

Eine Operatorklasse bewirkt nichts, solange die Template-Engine nicht weiß, auf welche Namen sie antwortet. Diese Seite listet jede Stelle auf, die es ihr mitteilt, in lib/eztemplate/classes/eztemplate.php (factory(), autoload()), und die Einstellungen, die sie liest.

Inhalt

  1. eztemplateautoload.php
  2. Wo die Engine sucht: AutoloadPathList und ExtensionAutoloadPath
  3. Die Reihenfolge der Erweiterungen
  4. PHP-Funktionen aus template.ini
  5. OW Simple Operator
  6. Template-Funktionen
  7. Nach dem Registrieren

eztemplateautoload.php

Die Engine bindet aus jedem Ordner ihrer Liste eine Datei namens eztemplateautoload.php ein. Die Datei setzt zwei Arrays, beide optional:

<?php
$eZTemplateOperatorArray = array();
$eZTemplateOperatorArray[] = array( 'script' => 'extension/myextension/autoloads/myextensionoperators.php',
                                    'class' => 'myExtensionOperators',
                                    'operator_names' => array( 'myext_initials', 'myext_reading_time' ) );

$eZTemplateFunctionArray = array();
$eZTemplateFunctionArray[] = array( 'script' => 'extension/myextension/autoloads/myextensionfunction.php',
                                    'class' => 'myExtensionFunction',
                                    'function_names' => array( 'myext_box' ) );

Die Schlüssel eines Operatoreintrags (class, script, class_parameter, function, operator_names, operator_names_function) sind unter Die Schnittstelle der Operatorklasse erklärt. Zwei Regeln:

  • beginnen Sie jedes Array mit = array(); (die Engine löscht beide Variablen vor dem Einbinden der Datei, aber eine Datei, die nur anhängt, ist fragil, wenn sie anderswo eingebunden wird);
  • die Datei läuft bei jeder Anfrage, die die Template-Engine erzeugt: beschränken Sie sie auf Array-Definitionen, ohne Datenbank- oder Dateizugriff. (Die Datei von OW Simple Operator liest eine INI-Datei; diese ist gecacht.)

Wo die Engine sucht

eZTemplate::factory() baut die Ordnerliste aus site.ini [TemplateSettings] auf:

[TemplateSettings]
AutoloadPathList[]
AutoloadPathList[]=lib/eztemplate/classes/
AutoloadPathList[]=kernel/common/
AutoloadPathList[]=lib/ezpdf/classes/
AutoloadPathList[]=kernel/private/eztemplate/
ExtensionAutoloadPath[]
  • AutoloadPathList[] enthält Ordner (mit abschließendem Schrägstrich). Die vier des Kernels kommen aus settings/site.ini. Eine Erweiterung kann hier ihren Ordner hinzufügen (die Erweiterung bcwebsitestatistics tut das: AutoloadPathList[]=extension/bcwebsitestatistics/autoloads/), aber der übliche Weg ist die nächste Einstellung.
  • ExtensionAutoloadPath[] enthält Namen von Erweiterungen; die Engine erweitert jeden zu extension/<name>/autoloads/ (eZExtension::expandedPathList()). Jede Erweiterung mit Operatoren fügt in ihrer settings/site.ini.append.php eine eigene Zeile hinzu:
<?php /* #?ini charset="utf-8"?

[TemplateSettings]
ExtensionAutoloadPath[]=myextension

*/ ?>

Beginnen Sie diese Liste in einer Erweiterung nie mit einer leeren Zeile ExtensionAutoloadPath[]: In einem INI-Append leert eine leere Zeile [] die bis dahin gesammelte Liste, und jede vor Ihrer Erweiterung zusammengeführte Erweiterung verliert ihre Operatoren.

Ein Ordner auf einer der beiden Listen ohne eztemplateautoload.php erzeugt in der Debug-Ausgabe die Warnung Path '...' does not have the file 'eztemplateautoload.php' allthough it reported it had one..

Die Reihenfolge der Erweiterungen

Die Engine liest zuerst AutoloadPathList[], dann ExtensionAutoloadPath[], jeweils in der Reihenfolge der Liste, und die letzte Registrierung eines Namens gewinnt (Registrierungsreihenfolge und Überschreibungen). Die Reihenfolge von ExtensionAutoloadPath[] ist die Reihenfolge, in der die site.ini.append.php-Dateien der Erweiterungen zusammengeführt werden:

  1. [ExtensionSettings] ActiveExtensions[] (globale Erweiterungen), dann ActiveAccessExtensions[] des Siteaccess (Zugriffserweiterungen);
  2. mit [ExtensionSettings] ExtensionOrdering=enabled (der Standard in settings/site.ini, und auf einer Entwicklungsinstallation) wird die Liste der aktiven Erweiterungen nach den Abhängigkeiten sortiert, die jede Erweiterung in ihrer extension.xml deklariert (eZExtension::extensionOrdering(), ezpExtension::getLoadingOrder()): <requires> und <uses> lassen Ihre Erweiterung nach der genannten laden, <extends> vor ihr.
<dependencies>
    <requires>
        <extension name="ezjscore" />
    </requires>
</dependencies>

Eine Erweiterung, die absichtlich den Operator einer anderen Erweiterung überschreibt, sollte daher <requires> (oder <uses>) auf diese deklarieren; zum Überschreiben eines Operators des Kernels oder der Template-Bibliothek ist keine Deklaration nötig, denn Erweiterungen werden immer nach AutoloadPathList[] gelesen.

PHP-Funktionen aus template.ini

template.ini [PHP] PHPOperatorList[] ordnet Operatornamen PHP-Funktionen zu, die ein Argument annehmen:

[PHP]
PHPOperatorList[]
PHPOperatorList[urlencode]=urlencode
PHPOperatorList[urldecode]=urldecode
PHPOperatorList[rawurlencode]=rawurlencode
PHPOperatorList[rawurldecode]=rawurldecode

Das ist die settings/template.ini des Kernels. kernel/common/eztemplateautoload.php registriert diese Namen über die Funktionen eZPHPOperatorNameInit() (die Namen) und eZPHPOperatorInit() (ein eZTemplatePHPOperator-Objekt für alle). Erweiterungen fügen Einträge in ihrer template.ini.append.php hinzu; auf einer Entwicklungsinstallation ergänzt cjw_newsletter nl2br, ezmultiupload strip_tags, swark serialize und unserialize, bcgooglesitemaps getenv. Verwenden Sie in einem Append Zeilen der Form Schlüssel=Wert ohne führende leere Zeile PHPOperatorList[], aus dem oben genannten Grund. Was diese Operatoren tun und wo ihre Grenzen liegen: PHP-Funktionsoperatoren.

OW Simple Operator

Die Erweiterung owsimpleoperator registriert Operatoren aus owsimpleoperator.ini ([PHPFunctions] PermittedFunctionList[] und [ClassOperators] PermittedClassOperatorList[]) über ihre eigene eztemplateautoload.php. Siehe OW Simple Operator.

Template-Funktionen

Template-Funktionen verwenden dieselben Dateien und dieselben Listen: Einträge in $eZTemplateFunctionArray mit function_names (oder function_names_function) statt operator_names. Siehe Eigene Template-Funktionen.

Nach dem Registrieren

  • Prüfen Sie die Autoload-Datei und die Klassendatei mit php -l.
  • Leeren Sie den INI-Cache (die Ordnerliste kommt aus den INI-Dateien) und die Template-Caches (kompilierte Templates wurden gegen die alte Liste kompiliert): php bin/php/ezcache.php --clear-tag=ini,template --allow-root-user.
  • php bin/php/ezpgenerateautoloads.php -e nur dann, wenn Sie Klassen hinzugefügt haben, die über die Autoload-Arrays statt über script geladen werden.
  • Auf einer Entwicklungsinstallation: ./console exp:velocity deploy --allow-root-user erledigt all das und startet Velocity neu, dessen Worker die Registrierungen behalten, die sie beim Start vorgenommen haben.
  • Prüfen Sie den Namen auf jedem Siteaccess, der ihn verwendet: {'x'|myext_initials} darf nicht Operator 'myext_initials' is not registered protokollieren, und das Skript, das die Eigentümer auflistet, darf Ihren Namen nicht neben einer anderen Klasse zeigen.

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