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

Von Hand: ein Template-Operator

mysite_hello von Hand zwei Template-Operatoren hinzufügen - der Anschluss, die Registrierung und die Klasse -, sie mit php -l prüfen, einschalten und verwenden, mit der Ausgabe, die die Template-Engine erzeugt hat.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/extension-development/part-3-extension-developer/tutorials/by-hand-template-operator.md

On this page

This page is a translation. Read the English original

Von Hand: ein Template-Operator

Tutorial 10. Sie fügen der Erweiterung mysite_hello aus dem vorigen Tutorial zwei Operatoren hinzu: mysite_greet( name, greeting ) und $text|mysite_initials. Jede Datei hat php -l bestanden; das Template am Ende wurde von der Template-Engine mit diesen Dateien gerendert.

1. Der Anschluss

Ergänzen Sie extension/mysite_hello/settings/site.ini.append.php:

<?php /* #?ini charset="utf-8"?

[TemplateSettings]
ExtensionAutoloadPath[]=mysite_hello

*/ ?>

2. Die Registrierung

extension/mysite_hello/autoloads/eztemplateautoload.php:

<?php
$eZTemplateOperatorArray = array();
$eZTemplateOperatorArray[] = array(
    'script' => 'extension/mysite_hello/classes/mysitehellooperators.php',
    'class' => 'mysiteHelloOperators',
    'operator_names' => array( 'mysite_greet', 'mysite_initials' )
);

3. Die Klasse

extension/mysite_hello/classes/mysitehellooperators.php:

<?php
/**
 * Template operators of mysite_hello:
 *   {mysite_greet( 'Ada' )}            -> Hello, Ada!
 *   {mysite_greet( 'Ada', 'Welcome' )} -> Welcome, Ada!
 *   {'Ada Lovelace'|mysite_initials}   -> AL
 */
class mysiteHelloOperators
{
    public function operatorList()
    {
        return array( 'mysite_greet', 'mysite_initials' );
    }

    public function namedParameterPerOperator()
    {
        return true;
    }

    public function namedParameterList()
    {
        return array(
            'mysite_greet' => array(
                'name'     => array( 'type' => 'string', 'required' => true, 'default' => '' ),
                'greeting' => array( 'type' => 'string', 'required' => false, 'default' => 'Hello' )
            ),
            'mysite_initials' => array()
        );
    }

    public function modify( $tpl, $operatorName, $operatorParameters, $rootNamespace, $currentNamespace, &$operatorValue, $namedParameters )
    {
        switch ( $operatorName )
        {
            case 'mysite_greet':
                $operatorValue = $namedParameters['greeting'] . ', ' . $namedParameters['name'] . '!';
                break;

            case 'mysite_initials':
                $initials = '';
                foreach ( preg_split( '/\s+/u', trim( (string)$operatorValue ) ) as $word )
                {
                    if ( $word !== '' )
                        $initials .= mb_strtoupper( mb_substr( $word, 0, 1 ) );
                }
                $operatorValue = $initials;
                break;
        }
    }
}

4. Prüfen und einschalten

php -l extension/mysite_hello/autoloads/eztemplateautoload.php
php -l extension/mysite_hello/classes/mysitehellooperators.php
php bin/php/ezpgenerateautoloads.php -e
php bin/php/ezcache.php --clear-all

5. Verwenden

Setzen Sie Folgendes in ein beliebiges Template, das Sie öffnen können, zum Beispiel einen Override der Startseite:

[{mysite_greet( 'Ada' )|wash}] [{mysite_greet( 'Ada', 'Welcome' )|wash}] [{'Ada Lovelace'|mysite_initials}] [{'émile zola'|mysite_initials}]

Es ergibt:

[Hello, Ada!] [Welcome, Ada!] [AL] [ÉZ]

6. Wenn es nicht funktioniert

Meldung in der Debug-AusgabeAbhilfe
Operator 'mysite_greet' is not registeredSchritt 1 fehlt, die Erweiterung ist inaktiv oder der INI-Cache wurde nicht geleert
Object problem with operator 'mysite_greet'die Klasse konnte nicht erzeugt werden: Prüfen Sie den Pfad unter script und ob operatorList() die Namen zurückgibt
es wird nichts ausgegebenmodify() hat $operatorValue für diesen Operator nicht gesetzt

7. Committen

git -C extension/mysite_hello add autoloads classes settings
git -C extension/mysite_hello commit -m "Added: The template operators mysite_greet and mysite_initials"

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