FAQ für CMS-Entwickler
Diese Seite richtet sich an Entwickler, die neu bei Exponential sind und schnelle Antworten möchten. Jede Antwort ist kurz und verweist auf die Seite mit der ganzen Geschichte.
Warnung
.htaccessbremst jede Anfrage. Sind.htaccess-Dateien erlaubt (AllowOverridealles außerNone), geschweige denn genutzt, sucht Apache sie bei jeder Anfrage in jedem Verzeichnis des Pfads und liest und wertet sie aus, und die Ladezeiten der Seiten steigen drastisch (gemessen). Die einzige wirkliche Abhilfe ist, die Funktion für den virtuellen Host abzuschalten:AllowOverride Noneim virtuellen HTTPS-Host, und die Regeln in der Konfiguration des virtuellen Hosts selbst als mod_rewrite-Regeln. Das ist in Geschwindigkeitstests im Produktivbetrieb weit schneller und die Zeit für die Optimierung einer Produktivkonfiguration unbedingt wert. Stellen Sie sofort um: Übernehmen Sie die Regeln des Beispiels für einen virtuellen HTTPS-Host in Ihren virtuellen Host (mit dem statischen Cache auchstaticcache_offload.conf), setzen SieAllowOverride None, führen Sieapachectl configtestaus, laden Sie Apache neu und testen Sie die Website. Dieselben Regeln für andere Server: nginx, LiteSpeed, Caddy, IIS, Velocity (eingebaut); wohin Regeln für virtuelle Hosts in einem Control Panel gehören: Plesk, cPanel, DirectAdmin, ISPConfig. Unter LiteSpeed oder OpenLiteSpeed kann zusätzlich der Seiten-Cache des Servers anonyme Besucher und Crawler ohne PHP bedienen: Seiten-Caching mit LiteSpeed und OpenLiteSpeed.
Inhalt
Das Modell
Was ist der Unterschied zwischen einem Knoten und einem Objekt? Das Objekt ist der Inhalt, mit seinen Versionen und Übersetzungen; ein Knoten ist ein Platz dieses Objekts im Baum. Ein Objekt kann mehrere Knoten haben; einer davon ist der Hauptknoten. Eine Seitenansicht zeigt einen Knoten. Objekte, Knoten und Platzierungen.
Wo lege ich Inhaltstypen fest?
Unter Setup > Klassen (/class/grouplist). Übertragen Sie sie in Paketen in andere Installationen.
Eine Inhaltsklasse anlegen.
Kann ich den Typ eines Feldes später ändern? Nicht direkt: ein neues Attribut hinzufügen, die Werte mit einem Skript kopieren, das alte entfernen. Inhaltsklassen und Attribute.
Gibt es ein Feld zum Wiederholen ("Repeater")?
Keinen verschachtelten Repeater-Datentyp. Verwenden Sie Unterobjekte einer kleinen Klasse, ezmatrix für kleine
Tabellen oder Blöcke von Layouts.
Inhalte auf Exponential abbilden.
Wie richte ich einen Bereich nur für Mitglieder ein?
Eine Sektion auf dem Teilbaum und eine Rolle mit content/read auf dieser Sektion, der Mitgliedergruppe zugewiesen.
Sektionen, Rollen und Richtlinien.
Templates und Caches
Meine Template-Änderung erscheint nicht. Warum? Ein Cache hält die alte Ausgabe oder Zuordnung: der Template-Override-Cache für neue Dateien und Regeln, der View-Cache oder der Antwort-Cache von Velocity. Caching für CMS-Entwickler und Warum erscheint meine Änderung nicht?.
Welches Template zeichnet diesen Teil der Seite?
Schalten Sie auf einem Entwicklungsrechner ShowUsedTemplates und ShowTemplatePathComments ein.
Templates und Overrides für CMS-Entwickler.
Kann ich PHP in Templates schreiben? Nein. Templates rufen Fetch-Funktionen und Operatoren auf; schreiben Sie einen Operator oder eine Fetch-Funktion in Ihrer Erweiterung, wenn Sie mehr brauchen. Erweiterungen, die Sie schreiben werden.
Templates oder der Layout-Editor? Templates für jede Seite einer Klasse; Layouts für Seiten, die Redakteure zusammenstellen. Beides verbindet sich über Template-Blöcke. Layouts für CMS-Entwickler.
Code und APIs
Wie lege ich Inhalte aus Code an?
eZContentFunctions::createAndPublishObject() und updateAndPublishObject(), mit einer Remote-ID je Objekt.
Inhalte aus PHP.
Gibt es eine REST-API?
Ja: Die Erweiterung ezprestapi bedient Routen v1 und v2 für Knoten, Unterelemente und Felder, mit Anlegen und
Entfernen in v2; Authentifizierung über persönlichen API-Schlüssel oder OAuth2. Aktualisierungen antworten vorerst mit
501. Die REST-API.
Gibt es GraphQL? Nicht in Exponential 6. Die Linie Exponential Platform auf dem Symfony-Stack hat es. Headless-Auslieferung.
Wohin gehören Hooks?
Workflow-Events an Auslösern, Event-Listener in site.ini [Event] oder Template-Operatoren, je nach Bedarf.
Workflows und Auslöser,
Erweiterungspunkte auf einen Blick.
Kann ich eine CSV-Datei importieren?
Ja: mit xrowextract, standardmäßig als Probelauf, oder mit dem einfachen ezcsvimport des Kernels.
Inhalte importieren.
Websites und Server
Kann eine Installation mehrere Websites betreiben? Ja, über Siteaccesses, die eine Datenbank und einen Baum teilen. Siteaccesses und Multisite.
Welchen Webserver sollte ich verwenden? Exponential Velocity ist die empfohlene Engine; FrankenPHP ist die produktionsreife Alternative; Apache oder nginx mit PHP-FPM funktionieren ebenfalls. Eine Website bereitstellen.
Welches PHP und welche Datenbanken?
PHP 8.0 bis 8.5 (PHP 7.4 ohne Support nutzbar) laut composer.json im Hauptverzeichnis. Datenbanken in der Reihenfolge der Präferenz des Projekts:
SQLite 3, PostgreSQL, MongoDB, MariaDB, Oracle, MySQL. Datenbankunterstützung,
Anforderungen.
Wie lege ich .htaccess und config.php an?
./console exp:setup:htaccess --apply kopiert .htaccess_root (mit --static: .htaccess_root_static), und
./console exp:setup:config --apply kopiert config.php-RECOMMENDED. Ohne --apply zeigen sie nur, was sie tun
würden, und eine vorhandene, abweichende Datei wird als Diff gezeigt und behalten, solange Sie nicht --force
angeben. .htaccess und config.php von der Konsole aus einrichten.
Wie ändere ich eine Einstellung in config.php ohne Editor?
./console exp:config:set EZP_INI_FILEMTIME_CHECK false --apply: Die Datei wird gesichert, mit php -l geprüft und
in einem Schritt geschrieben. exp:config:list zeigt jede dokumentierte Einstellung, exp:config:get <NAME> einen
Wert, und exp:config:unset <NAME> --apply kommentiert sie wieder aus.
.htaccess und config.php von der Konsole aus einrichten.
Wie starte ich ein Projekt schnell?
exp:install mit dem Standardpaket sevenx_multisite auf SQLite, dann Ihre eigene Erweiterung.
Entwicklungsumgebung.
Das Projekt
Wer führt Exponential? 7x, das Unternehmen, das es führt, und die Exponential Foundation, die gemeinnützige Organisation. Exponential steht nicht in Verbindung mit eZ Systems oder Ibexa. Wer ist 7x?, Wer ist die Exponential Foundation?.
Wie ist die Geschichte? Exponential führt den Code eines Produkts fort, das sein Hersteller nach fast 18 Jahren eingestellt hat; 7x veröffentlicht die Releases 6.0.x seit 2024. Exponential für CMS-Entwickler.
Welche Lizenz?
Der Kernel steht unter GPL 2.0 oder später (composer.json im Hauptverzeichnis); diese Dokumentation ist frei unter
der GNU FDL 1.3. Freie Dokumentation.
Wo frage ich nach? Die Gemeinschaft fragen.
Verwandte Seiten
- CMS-Entwickler: hier beginnen
- Glossar für CMS-Entwickler
- FAQ für Trainer
- 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.