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

Der Verzeichnisaufbau einer Erweiterung

Jeder Ordner- und Dateiname, den eine Erweiterung haben kann, was der Kernel damit macht, welche Einstellung den Kernel dorthin führt und wie viele der installierten Erweiterungen ihn verwenden - die Landkarte für den…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/extension-development/part-3-extension-developer/extension-directory-layout.md

On this page

This page is a translation. Read the English original

Der Verzeichnisaufbau einer Erweiterung

Teil 3, Kapitel 1. Eine Erweiterung ist ein Ordner unter extension/, dessen Unterordner festen Namen folgen. Der Kernel findet jede Art von Code über einen Namen und eine Einstellung, die auf Ihre Erweiterung verweist. Dieses Kapitel ist die Landkarte; jede Zeile verlinkt das Kapitel, das sie erklärt.

Der vollständige Baum

extension/mysite_hello/
    ezinfo.php                     metadata (class mysite_helloInfo)
    extension.xml                  metadata and dependencies (read first)
    composer.json                  for Composer and Packagist
    README.md, LICENSE, doc/       documentation and license
    settings/                      *.ini.append.php (and your own *.ini)
        siteaccess/<sa>/           per-siteaccess settings the extension owns
    classes/                       PHP classes (autoloaded)
    autoloads/                     eztemplateautoload.php: template operators
    modules/<module>/              module.php, view scripts, function_definition.php
    design/<design>/
        templates/                 templates
        override/templates/        override templates
        stylesheets/, javascript/, images/
    datatypes/<datatype>/          <datatype>type.php
    eventtypes/event/<event>/      <event>type.php
    cronjobs/                      cronjob scripts
    bin/php/                       command line scripts (ext:<extension>:<name>)
    translations/<locale>/         translation.ts
    share/                         db_schema.dba, db_data.dba, filelist.md5
    sql/<database>/                schema.sql per database engine
    update/                        upgrade scripts and SQL
    packages/                      packages the extension ships
    tests/                         PHPUnit tests

Nichts davon ist Pflicht außer einem Grund, zu existieren: Eine Erweiterung, die nur settings/ hat, ist vollständig. ezinfo.php und extension.xml werden für jede Erweiterung dringend empfohlen, weil die Administration und die Upgrade-Prüfungen sie lesen.

Was der Kernel mit jedem Teil macht

PfadGefunden, weilKapitel
ezinfo.php, extension.xmlvon expInfo für jede Erweiterung auf der Festplatte gelesenezinfo.php, extension.xml
settings/den Override-Verzeichnissen der Einstellungen einer aktiven Erweiterung hinzugefügtEinstellungen in einer Erweiterung
classes/von php bin/php/ezpgenerateautoloads.php -e nach var/autoload/ezp_extension.php eingelesenAutoloads und Klassennamen
autoloads/eztemplateautoload.phpsite.ini [TemplateSettings] ExtensionAutoloadPath[]=<ext>Template-Operatoren
modules/<module>/module.phpmodule.ini [ModuleSettings] ExtensionRepositories[]=<ext>Module und Views
design/<design>/design.ini [ExtensionSettings] DesignExtensions[]=<ext>Ein Design in einer Erweiterung
datatypes/<type>/<type>type.phpcontent.ini [DataTypeSettings] ExtensionDirectories[]=<ext> und AvailableDataTypes[]=<type>Datentypen
eventtypes/event/<type>/<type>type.phpworkflow.ini [EventSettings] ExtensionDirectories[]=<ext> und AvailableEventTypes[]=event_<type>Workflow-Ereignistypen
cronjobs/<script>.phpcronjob.ini [CronjobSettings] ExtensionDirectories[]=<ext> und Scripts[] eines TeilsCronjob-Teile
bin/php/<name>.phpdie Console findet es als ext:<extension>:<name>CLI-Skripte und Console-Befehle
translations/<locale>/translation.tssite.ini [RegionalSettings] TranslationExtensions[]=<ext>Übersetzungen in einer Erweiterung
share/db_schema.dba, sql/der Paket-Installer oder Ihr Upgrade-SkriptDatenbankschema, .dba-Dateien und Upgrades
tests/Ihre phpunit.xml.distTests für Erweiterungen

Die Regel hinter der Tabelle: Der Ordnername ist eine Konvention, und eine Einstellung im eigenen settings/ Ihrer Erweiterung registriert ihn. Ein Ordner datatypes/ in einer Erweiterung, die sich nicht selbst in ExtensionDirectories[] einträgt, wird nie angesehen.

Die Pfade für Datentypen und Ereignistypen sind genau die, die der Kernel bildet: eZDataType::loadAndRegisterType() bindet <directory>/<type>/<type>type.php ein, und eZWorkflowType::loadAndRegisterType() zerlegt einen Ereignistyp-String wie event_mysite_notify in die Gruppe event und den Typ mysite_notify und bindet <extension>/eventtypes/event/mysite_notify/mysite_notifytype.php ein.

Wie verbreitet ist jeder Ordner?

Auf der Referenzinstallation (87 Erweiterungen auf der Festplatte) wurden die Ordner so oft verwendet: settings/ 80, classes/ 68, design/ 62, doc/ 60, translations/ 50, modules/ 45, autoloads/ 39, tests/ 35, bin/ 28, sql/ 19, datatypes/ 17, share/ 17, cronjobs/ 15, update/ 8, eventtypes/ 6, packages/ 4. Zählen Sie Ihre:

for d in settings classes design modules autoloads datatypes eventtypes cronjobs bin translations tests; do
    printf "%-12s %s\n" "$d" "$(ls -d extension/*/$d 2>/dev/null | wc -l)"
done

Die Erweiterung benennen

  • Kleinbuchstaben, Ziffern und Unterstriche: mysite_hello, nicht MySite-Hello.
  • Eindeutig und Ihr eigener: Ein Präfix Ihrer Organisation oder Ihres Projekts (mysite_, acme_) vermeidet Kollisionen mit jeder anderen Erweiterung. Erweiterungen von 7x verwenden sevenx (das offizielle öffentliche Präfix für PHP-Code von 7x; "7x" kann keines sein, da ein Name nicht mit einer Ziffer beginnen kann) oder exp (bewusst verwendet für Arbeit, die dem Projekt Exponential und der Exponential Foundation zugeordnet ist): siehe Namenspräfixe: sevenx und exp. Beginnen Sie neue Namen nicht mit ez, das zu den historischen Klassen des Kernels gehört.
  • Der Ordnername wird überall verwendet (Einstellungen, extra von Composer, Klassennamen wie mysite_helloInfo), wählen Sie ihn also einmal.

Von den RAD-Werkzeugen erzeugt

Jeder Assistent unter Setup > RAD schreibt diese Struktur für die Teile, die Sie auswählen, und listet jede Datei auf, bevor er sie schreibt. Die Ausgabe eines Assistenten mit dieser Landkarte zu vergleichen, ist ein guter Weg, sie zu lernen; siehe Der Rundgang durch die RAD-Werkzeuge.

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