Erweiterungen, die Sie schreiben werden
Diese Seite richtet sich an Entwickler, die den Code eines Website-Projekts planen. In Exponential liegt alles, was ein
Projekt hinzufügt, in Erweiterungen unter extension/: Designs, Einstellungen, PHP-Code, Templates,
Übersetzungen. Der Kernel und die mitgelieferten Erweiterungen bleiben unberührt, und das macht Aktualisierungen sicher.
Ein typisches Projekt braucht eine oder zwei eigene Erweiterungen.
Inhalt
- Der übliche Satz
- Die Website-Erweiterung
- Eine Code-Erweiterung
- Was eine Code-Erweiterung hinzufügen kann
- Aktivieren und laden
- Versionsverwaltung
- Schnelle Starts: die RAD-Werkzeuge
- Wo das Buch tiefer geht
Der übliche Satz
| Erweiterung | Enthält | Beispielname |
|---|---|---|
| Website-Erweiterung | das Design, Override-Regeln, Siteaccess-Einstellungen, Bildvarianten, eigene Tags, Klassen als Pakete | exp_mysite |
| Code-Erweiterung (bei Bedarf) | PHP: Operatoren, Fetch-Funktionen, Module, Workflow-Events, Cronjobs, Konsolenbefehle | exp_mysite_tools |
Kleine Projekte halten beides in einer Erweiterung. Trennen Sie sie, wenn der Code von anderen Websites
wiederverwendet wird oder wenn Designer und PHP-Entwickler in unterschiedlichen Release-Zyklen arbeiten. Benennen Sie
sie mit dem Präfix Ihres Projekts und in neuem Code mit exp
(Namenspräfixe).
Die Website-Erweiterung
extension/exp_mysite/
extension.xml, ezinfo.php, composer.json, README.md
settings/
design.ini.append.php DesignExtensions[]=exp_mysite
site.ini.append.php extension-wide settings
image.ini.append.php, content.ini.append.php
siteaccess/<public sa>/ site.ini, override.ini ... of the public siteaccess
design/exp_mysite/
templates/ override/templates/ stylesheets/ javascript/ images/
translations/<locale>/translation.ts
packages/ classes exported as packagesDesign-Arbeit: Ihre eigene Design-Erweiterung, Aufbau einer Design-Erweiterung und Theme-Erweiterungen: hier beginnen der Designer.
Eine Code-Erweiterung
extension/exp_mysite_tools/
extension.xml, ezinfo.php, composer.json
classes/ PHP classes, autoloaded
autoloads/ eztemplateautoload.php for template operators
modules/exp_mysite_tools/ module.php, views, function_definition.php
eventtypes/event/<type>/ workflow event types
cronjobs/ cronjob scripts
bin/php/ command line scripts
settings/ the registrations and your own .ini
tests/Jeder Ordner und die Einstellung, mit der der Kernel ihn findet: Verzeichnisaufbau einer Erweiterung.
Was eine Code-Erweiterung hinzufügen kann
| Sie brauchen | Fügen Sie hinzu | Lesen |
|---|---|---|
| Einen berechneten Wert oder eine Formatierung in Templates | einen Template-Operator | Template-Operatoren |
| Daten, die kein Fetch liefert | eine Fetch-Funktion | Fetch-Funktionen |
| Eine Seite mit eigener Adresse, einen Formular-Handler, einen JSON-Endpunkt | eine Modul-View mit einer Richtlinie | Module und Views |
| Einen Schritt beim Veröffentlichen oder an der Kasse | einen Workflow-Event-Typ | Workflows und Auslöser |
| Geplante Arbeit | einen Cronjob | Cronjobs |
| Ein Feld mit eigener Speicherung und Bearbeitung | einen Datentyp | Datentypen wählen |
| Daten, die keine Inhalte sind | eine Tabelle mit eZPersistentObject | Persistente Objekte und Tabellen |
| Einen Import oder eine Wartungsaufgabe | einen Konsolenbefehl oder ein Skript | CLI-Skripte und Konsolenbefehle |
Versuchen Sie Einstellungen, Templates und vorhandene Erweiterungen vor eigenem Code; das Kapitel Wenn Einstellungen nicht genügen des Buchs hilft bei der Entscheidung.
Aktivieren und laden
Fügen Sie die Erweiterung zu
site.ini [ExtensionSettings] ActiveExtensions[]hinzu (oder zuActiveAccessExtensions[]in einem Siteaccess):./console exp:ini add 'site.ini/ExtensionSettings/ActiveExtensions[]' exp_mysite global --allow-root-userErzeugen Sie die Autoloads neu, nachdem Sie Klassen hinzugefügt oder umbenannt haben:
php bin/php/ezpgenerateautoloads.php -e.Leeren Sie den INI-Cache und starten Sie die PHP-Worker neu, die die Website bedienen (Eine Website bereitstellen).
Die Reihenfolge zählt: Eine Erweiterung, die in ActiveExtensions[] früher steht, gewinnt bei Einstellungen und in der
Design-Kette (Eine Erweiterung aktivieren,
Ladereihenfolge der Erweiterungen).
Versionsverwaltung
Jede Ihrer Erweiterungen ist ein eigenes Git-Repository oder Teil Ihres Projekt-Repositorys; der Kernel und die
mitgelieferten Erweiterungen kommen aus Composer. Committen Sie Templates, Einstellungen, Pakete und Code; committen Sie
nie settings/override/, var/ oder Zugangsdaten (Mit Git entwickeln,
Entwicklungsumgebung). Geben Sie der Erweiterung eine extension.xml und eine
ezinfo.php mit einer Version, damit die Info-Seite der Administration und die Aktualisierungsprüfungen erkennen, welches
Release installiert ist (extension.xml,
ezinfo.php).
Schnelle Starts: die RAD-Werkzeuge
Die Administration hat Assistenten, die ein funktionierendes Gerüst schreiben: eine Design-Erweiterung, ein Modul, einen Template-Operator, einen Datentyp, ein Workflow-Event, eine Einstellungserweiterung, eine Inhaltserweiterung mit Klassen (RAD-Werkzeuge, Rundgang durch die RAD-Werkzeuge). Lesen Sie, was sie erzeugen; von da an ist es Ihr Code.
Wo das Buch tiefer geht
Das Buch Erweiterungsentwicklung behandelt all das ausführlich, von der ersten Erweiterung bis zu ihrer Veröffentlichung. Verwenden Sie seine Lesepfade: Der Pfad für Website-Bauer (Einstellungen, Templates, Overrides) und der Pfad für PHP-Entwickler passen am besten zu einem CMS-Entwickler. Die Veröffentlichung einer Erweiterung für andere folgt strengen Regeln für Versionen und Tags (Veröffentlichen).
Verwandte Seiten
- Erweiterungspunkte auf einen Blick
- Was eine Erweiterung ist
- Modul 7: Erweiterungen
- 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.