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

Lektion 7.4: Ladereihenfolge und Abhängigkeiten

Die Teilnehmenden sehen, warum die Reihenfolge der aktiven Erweiterungen entscheidet, welche Einstellungen und Templates gewinnen, deklarieren extends, requires und uses in extension.xml, schalten ExtensionOrdering ein…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/trainers/developers/module-07-extensions/loading-order-and-dependencies.md

On this page

This page is a translation. Read the English original

Lektion 7.4: Ladereihenfolge und Abhängigkeiten

Wenn zwei Erweiterungen dieselbe Einstellung setzen oder dasselbe Template liefern, gewinnt eine von ihnen, und die Reihenfolge der aktiven Erweiterungen entscheidet, welche. In dieser Lektion sehen die Teilnehmenden die Reihenfolge bei der Arbeit, deklarieren in extension.xml, worauf ihre Erweiterung aufbaut, und lesen auf der Seite Extensions ab, wo jede Erweiterung tatsächlich geladen wird.

Auf einen Blick

KursEntwickler
ModulModul 7: Erweiterungen
Dauer40 Minuten (15 Präsentation, 25 Übung)
NiveauExperten
ZielgruppeEntwickler
VoraussetzungenLektion 7.3

Lernziele

Nach dieser Lektion können die Teilnehmenden:

  • erklären, dass eine früher geladene Erweiterung bei Einstellungen und Design-Templates gewinnt;
  • mit exp:ini where herausfinden, aus welcher Erweiterung eine Einstellung stammt;
  • <extends>, <requires> und <uses> in extension.xml deklarieren;
  • erklären, was [ExtensionSettings] ExtensionOrdering=enabled ändert;
  • unter Setup > Extensions die tatsächliche Ladeposition ablesen.

Hinweise für Trainer

So präsentieren Sie es

Quellen: Abhängigkeiten in extension.xml deklarieren, Ladereihenfolge der Erweiterungen und Die Seite Extensions.

  1. Wer gewinnt (4 Minuten). Die Reihenfolge von ActiveExtensions[] entscheidet: Eine früher geladene Erweiterung gewinnt bei Einstellungen und Design-Templates. exp:ini where listet jede Datei auf, die eine Variable setzt, in Ladereihenfolge, und den wirksamen Wert.

  2. Abhängigkeiten (5 Minuten). In extension.xml, nach <metadata>:

    ElementLädt Ihre ErweiterungVerwenden Sie es für
    <extends>vor der genannten (Ihre gewinnt)Das Überschreiben von Templates oder Einstellungen einer Basiserweiterung
    <requires>nach der genanntenEtwas, ohne das Ihre nicht funktioniert
    <uses>nach der genanntenEtwas, das Ihre verwendet, wenn es vorhanden ist

    Der Kernel liest sie in ezpExtension::getLoadingOrder(), wenn ExtensionOrdering=enabled gesetzt ist. Sie ordnen nur aktive Erweiterungen: <requires> aktiviert die andere nicht.

  3. Die Seite (3 Minuten). Unter Setup > Extensions zeigt jede Karte, wo die Erweiterung tatsächlich geladen wird (Geladen als Nummer n), wenn Abhängigkeiten sie verschieben; Verschiebungen werden geprüft, bevor sie geschrieben werden.

  4. Auch Composer (2 Minuten). Dieselben Abhängigkeiten gehören in composer.json (require oder suggest), damit Composer installiert, was gebraucht wird.

Häufige Fragen

Warum hat das Template meines Themes nicht gegen das eines anderen Themes gewonnen? Die andere Erweiterung wird früher geladen oder deklariert, dass sie Ihre erweitert. Lesen Sie die Reihenfolge und die Blöcke <extends>.

Legt eine fehlerhafte extension.xml die Website lahm? Sie wird in der Debug-Ausgabe gemeldet, und ihre Ladereihenfolge wird ignoriert; prüfen Sie sie mit xmllint.

Sollte jede Erweiterung Abhängigkeiten deklarieren? Jede Erweiterung, die eine andere überschreibt oder braucht, ja; so wird die Reihenfolge erklärbar statt zufällig.

Stolperfallen

  • Die Reihenfolge auf einer Live-Website von Hand ändern. Verwenden Sie die Seite Extensions oder exp:ini mit einer Prüfung; eine falsche Reihenfolge kann Templates auf der ganzen Website verändern.
  • <requires> als Installationsprogramm. Es ordnet; es installiert und aktiviert nichts.
  • Unterschiedliche Reihenfolge in Entwicklung und Live-Betrieb. Die Einstellungen kommen auf jedem Rechner aus anderen Dateien; vergleichen Sie auf beiden mit exp:ini get site.ini/ExtensionSettings/ActiveExtensions.

Praktische Übung

Auf der Entwicklungsinstallation.

  1. Zeigen Sie die Reihenfolge der aktiven Erweiterungen an: php bin/php/console exp:ini get site.ini/ExtensionSettings/ActiveExtensions.

  2. Prüfen Sie, ob die Sortierung nach Abhängigkeiten eingeschaltet ist: php bin/php/console exp:ini where site.ini/ExtensionSettings/ExtensionOrdering.

  3. Suchen Sie eine Einstellung, die mehrere Erweiterungen setzen, zum Beispiel php bin/php/console exp:ini where design.ini/ExtensionSettings/DesignExtensions <sa>, und lesen Sie, welche Datei zuerst kommt.

  4. Lesen Sie einen echten Abhängigkeitsblock: grep -A8 "<dependencies>" extension/*/extension.xml | head -40.

  5. Fügen Sie Ihrer extension.xml nach </metadata> eine Abhängigkeit hinzu:

    <dependencies>
        <uses>
            <extension name="ezjscore" />
        </uses>
    </dependencies>
  6. Prüfen Sie sie: xmllint --noout extension/mysite_hello/extension.xml.

  7. Leeren Sie den INI-Cache (php bin/php/ezcache.php --clear-tag=ini) und öffnen Sie Setup > Extensions. Suchen Sie, wo mysite_hello geladen wird.

  8. Committen Sie extension.xml mit Updated: Declare the use of ezjscore.

Erwartetes Ergebnis

  • Schritt 1: die Liste in Ladereihenfolge, mit mysite_hello darin.
  • Schritt 3: mehrere Dateien in Ladereihenfolge, am Ende der wirksame Wert.
  • Schritt 6: keine Ausgabe.
  • Schritt 7: die Karte von mysite_hello; mit ExtensionOrdering=enabled wird sie nach ezjscore geladen.
  • Der Trainer fragt alle Teilnehmenden, welches Element sie für ein Theme verwenden würden, das die Templates eines anderen Themes ändert.

Quiz

  1. Zwei Erweiterungen liefern dasselbe Template. Welche gewinnt?
  2. Ihr Theme überschreibt Templates eines Basis-Themes. Welches Element deklarieren Sie? A. <requires> B. <uses> C. <extends> D. <metadata>
  3. Welche Einstellung lässt den Kernel die Erweiterungen nach ihren deklarierten Abhängigkeiten ordnen?
  4. Aktiviert <requires> die andere Erweiterung?
  5. Welcher Befehl listet jede Datei auf, die eine Variable setzt, in Ladereihenfolge?
Antworten
  1. Die Erweiterung, die in der Reihenfolge der aktiven Erweiterungen früher geladen wird.
  2. C. <extends> lädt Ihre vor der Basis, sodass Ihre gewinnt.
  3. site.ini [ExtensionSettings] ExtensionOrdering=enabled.
  4. Nein; es ordnet nur aktive Erweiterungen.
  5. exp:ini where <file>/<block>/<variable>.

Weiterführende Literatur

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