Package/de: Difference between revisions

From Joomla! Documentation

mNo edit summary
Created page with "=== Plugin ''group''-Attribut === Das ''group''-Attribut ist erforderlich, damit der Paketinstaller das Plugin für die Deinstallation finden kann. Die Gruppe bezieht sich au..."
 
(9 intermediate revisions by the same user not shown)
Line 11: Line 11:
Eine Paket-Erweiterung wird erstellt, indem alle zip-Dateien der Erweiterungen zusammen mit einer XML-Manifest-Datei gepackt werden. Ein Paket besteht beispielsweise aus folgenden Bestandteilen:
Eine Paket-Erweiterung wird erstellt, indem alle zip-Dateien der Erweiterungen zusammen mit einer XML-Manifest-Datei gepackt werden. Ein Paket besteht beispielsweise aus folgenden Bestandteilen:


<div class="mw-translate-fuzzy">
* '''Komponente''' helloworld
* '''Komponente''' helloworld
* '''Modul''' helloworld
* '''Modul''' helloworld
Line 17: Line 16:
* '''System-Plugin''' helloworld  
* '''System-Plugin''' helloworld  
* '''Template''' helloworld
* '''Template''' helloworld
</div>


<div class="mw-translate-fuzzy">
Das Paket sollte die folgende Baumstruktur in der zip-Datei haben:
Das Paket sollte die folgende Baumstruktur in der zip-Datei haben:
</div>


   -- pkg_helloworld.xml
   -- pkg_helloworld.xml
Line 32: Line 28:
   -- pkg_script.php
   -- pkg_script.php


Die Datei pkg_helloworld.xml könnte folgendermaßen aussehen:
Die Datei ''pkg_helloworld.xml'' könnte folgendermaßen aussehen:


<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
Line 58: Line 54:
</syntaxhighlight>
</syntaxhighlight>


Wenn dies in eine ZIP-Datei gepackt wird und man diese installiert, wird jede enthaltene Erweiterung installiert. Das Paket wird auch im Backend in der Liste der Erweiterungen aufgeführt und wird verwendet, um alle Erweiterungen des Paktes zu deinstallieren.
Wenn das Paket gezippt und installiert wird, werden alle Erweiterungen installiert. Das Paket wird in der Erweiterungsliste sichtbar sein, sodass ein Benutzer alle im Paket enthaltenen Erweiterungen deinstallieren kann.


Es sollte immer der Uninstaller des Pakets verwendet werden und nicht die Uninstaller der einzelnen Teilpakete. So wird verhindert, dass in der Erweiterungsverwaltung verwaiste Einträge stehen bleiben.
Es sollte immer der Uninstaller des Pakets verwendet werden und nicht die Uninstaller der einzelnen Teilpakete. So wird verhindert, dass in der Erweiterungsverwaltung verwaiste Einträge stehen bleiben.


<div class="mw-translate-fuzzy">
=== Id= ''<file id="not_arbitrary">'' ===
=== Id= <file id="not_arbitrary"> ===
Das Id-Element im ''<file ..>'' Tag kann '''nicht''' beliebig gewählt werden! ''id='' sollte auf den Wert der ''element''-Spalte in der Tabelle ''#__extensions'' gesetzt werden. Wenn sie nicht korrekt gesetzt sind, wird bei der Deinstallation des Pakets die untergeordnete Datei (''<file ..>'') nicht gefunden und deinstalliert.
Das Id-Element im <file ..> Tag kann NICHT beliebig gewählt werden! "id=" sollte auf den Wert der ''element''-Spalte in der Tabelle "#__extensions" gesetzt werden. Wenn diese nicht korrekt gesetzt werden, können die Teilpakete ( <file> ) bei der Paket-Deinstallation NICHT gefunden und deinstalliert werden.
</div>


=== Plugin "group" attribute ===
=== Plugin ''group''-Attribut ===  
The ''group'' attribute is required for the package installer to locate the plugin for uninstall. Group refers to the ''<folder>'' name specified in the plugin manifest file.
Das ''group''-Attribut ist erforderlich, damit der Paketinstaller das Plugin für die Deinstallation finden kann. Die Gruppe bezieht sich auf den ''<folder>''-Namen, der in der Plugin-Manifestdatei angegeben ist.


=== Manifest-Dateiname und Paketname ===
=== Manifest-Dateiname und Paketname ===
Line 80: Line 74:
Das Versionsattribut des <extension> tags sollte auf die minimal unterstützte Joomla!-Version für dieses Paket gesetzt werden. Wenn das Paket z.B. Joomla! 3.2 und höher unterstützt, sollte dies auf 3.2 gesetzt werden.
Das Versionsattribut des <extension> tags sollte auf die minimal unterstützte Joomla!-Version für dieses Paket gesetzt werden. Wenn das Paket z.B. Joomla! 3.2 und höher unterstützt, sollte dies auf 3.2 gesetzt werden.


<div class="mw-translate-fuzzy">
Hinweis: Das ''version''-Attribut ist rein optional. Es hat keinen Einfluss auf die Installationsroutine von Joomla. Ab Joomla 4 wurde daher das ''version''-Attribut aus allen Core-Erweiterungen entfernt. [https://github.com/joomla/joomla-cms/pull/29960 Siehe Pull-Request 29960 auf github.com]
Hinweis: Das <code>version</code>-Attribut ist rein optional. Es hat keinen Einfluss auf die Installationsroutine von Joomla. Ab Joomla 4 wurde daher das <code>version</code>-Attribut aus allen Core-Erweiterungen entfernt. [https://github.com/joomla/joomla-cms/pull/29960 Siehe Pull-Request 29960 auf github.com]
=== Erweiterung Deinstallation Abhängigkeit ===
</div>
Ab Joomla! 3.7.0 kann eine Paketerweiterung mit einem ''<blockChildUninstall>true</blockChildUninstall>''-Element im Paketmanifest deklarieren, dass ihre Kind-Erweiterungen nicht eigenständig deinstalliert werden können. Wenn das Paket alle seine Erweiterungen benötigt, um korrekt zu funktionieren, setzen Sie dies auf true oder 1.
=== Extension Uninstall Dependency ===
<div class="mw-translate-fuzzy">
Ab Jooma! 3.7.0 kann eine Paketerweiterung mit einem <code>&lt;blockChildUninstall&gt;true&lt;/blockChildUninstall&gt;</code>-Element im Paketmanifest deklarieren, dass ihre Kind-Erweiterungen nicht eigenständig deinstalliert werden können. Wenn das Paket alle seine Erweiterungen benötigt, um korrekt zu funktionieren, setzen Sie dies auf <code>true</code> oder <code>1</code>.
</div>


<noinclude>
<noinclude>
<div class="mw-translate-fuzzy">
[[Category:Extensions/de|Erweiterungen]]
[[Category:Extensions/de|Erweiterungen]]
</div>
[[Category:Development/de|Entwicklung]]
[[Category:Extension_development/de|Erweiterungs-Entwicklung]]
</noinclude>
</noinclude>

Latest revision as of 21:04, 9 January 2024

Anmerkung zu komponentenabhängigen Modulen

Manche Module (oder Plugins etc.) verwenden Models, Helpers u.ä. einer Komponente. In diesen Fällen wäre es wünschenswert, das Modul so zu packen, dass es deinstalliert wird, sobald die Komponente selber deinstalliert wird. Diese Abhängigkeitsverwaltung wird in Joomla! zwar angestrebt, aber bisher nicht umgesetzt. Es wird empfohlen, den Standards zu folgen und ein Paket zu verwenden, wie unten beschrieben.

Was ist ein Paket?

Ein Paket ist eine Erweiterung, mit der mehrere Erweiterungen auf einmal installiert werden. Dies wird z.B. verwendet, wenn man eine Komponente und ein Modul hat, die voneinander abhängig sind. Wenn diese in einem Paket kombiniert werden, kann der Benutzer die beiden Erweiterungen in einem Rutsch installieren und deinstallieren. Paket-Erweiterungen können ab Joomla Joomla 2.5 verwendet werden.

Wie erstellt man ein Paket?

Eine Paket-Erweiterung wird erstellt, indem alle zip-Dateien der Erweiterungen zusammen mit einer XML-Manifest-Datei gepackt werden. Ein Paket besteht beispielsweise aus folgenden Bestandteilen:

  • Komponente helloworld
  • Modul helloworld
  • Bibliothek helloworld
  • System-Plugin helloworld
  • Template helloworld

Das Paket sollte die folgende Baumstruktur in der zip-Datei haben:

 -- pkg_helloworld.xml
 -- packages <dir>
     |-- com_helloworld.zip
     |-- mod_helloworld.zip
     |-- lib_helloworld.zip
     |-- plg_sys_helloworld.zip
     |-- tpl_helloworld.zip
 -- pkg_script.php

Die Datei pkg_helloworld.xml könnte folgendermaßen aussehen:

 <?xml version="1.0" encoding="UTF-8" ?>
 <extension type="package" version="1.6" method="upgrade">
 <name>Hello World Package</name>
 <author>Hello World Package Team</author>
 <creationDate>May 2012</creationDate>
 <packagename>helloworld</packagename>
 <version>1.0.0</version>
 <url>http://www.yoururl.com/</url>
 <packager>Hello World Package Team</packager>
 <packagerurl>http://www.yoururl.com/</packagerurl>
 <description>Example package to combine multiple extensions</description>
 <update>http://www.updateurl.com/update</update>
 <scriptfile>pkg_script.php</scriptfile>
 <files folder="packages">
   <file type="component" id="com_helloworld" >com_helloworld.zip</file>
   <file type="module" id="helloworld" client="site">mod_helloworld.zip</file>
   <file type="library" id="helloworld">lib_helloworld.zip</file>
   <file type="plugin" id="helloworld" group="system">plg_sys_helloworld.zip</file>
   <file type="template" id="helloworld" client="site">tpl_helloworld.zip</file>
 </files>
 </extension>

Wenn das Paket gezippt und installiert wird, werden alle Erweiterungen installiert. Das Paket wird in der Erweiterungsliste sichtbar sein, sodass ein Benutzer alle im Paket enthaltenen Erweiterungen deinstallieren kann.

Es sollte immer der Uninstaller des Pakets verwendet werden und nicht die Uninstaller der einzelnen Teilpakete. So wird verhindert, dass in der Erweiterungsverwaltung verwaiste Einträge stehen bleiben.

Id= <file id="not_arbitrary">

Das Id-Element im <file ..> Tag kann nicht beliebig gewählt werden! id= sollte auf den Wert der element-Spalte in der Tabelle #__extensions gesetzt werden. Wenn sie nicht korrekt gesetzt sind, wird bei der Deinstallation des Pakets die untergeordnete Datei (<file ..>) nicht gefunden und deinstalliert.

Plugin group-Attribut

Das group-Attribut ist erforderlich, damit der Paketinstaller das Plugin für die Deinstallation finden kann. Die Gruppe bezieht sich auf den <folder>-Namen, der in der Plugin-Manifestdatei angegeben ist.

Manifest-Dateiname und Paketname

Die Möglichkeit die Paketdatei zu deinstallieren und der Name der Manifest-Datei hängen eng zusammen. Die Manifest-Datei muss das Präfix "pkg_" haben. Der Rest des Namens (ohne die Erweiterung .xml) wird als <paketname> verwendet. Oder anders herum gesagt: ein Paket, das als "blurpblurp_J3" identifiziert werden soll, muss eine Manifest-Datei "pkg_blurpblurp_J3.xml" haben. Ist dies nicht der Fall, kann das Paket nicht deinstalliert werden.

Optional kann eine Datei <pkg_script.php> verwendet werden, die eine Klasse pkg_<packagename>InstallerScript mit einer öffentlichen Funktion postflight enthält (unterstützt seit Joomla! 3.6).

Extension tag

Seit Joomla! 3.4 sollte method="upgrade" im <extension> tag hinzugefügt werden, wenn sich das Paket bei Folge-Installationen updaten soll.

Das Versionsattribut des <extension> tags sollte auf die minimal unterstützte Joomla!-Version für dieses Paket gesetzt werden. Wenn das Paket z.B. Joomla! 3.2 und höher unterstützt, sollte dies auf 3.2 gesetzt werden.

Hinweis: Das version-Attribut ist rein optional. Es hat keinen Einfluss auf die Installationsroutine von Joomla. Ab Joomla 4 wurde daher das version-Attribut aus allen Core-Erweiterungen entfernt. Siehe Pull-Request 29960 auf github.com

Erweiterung Deinstallation Abhängigkeit

Ab Joomla! 3.7.0 kann eine Paketerweiterung mit einem <blockChildUninstall>true</blockChildUninstall>-Element im Paketmanifest deklarieren, dass ihre Kind-Erweiterungen nicht eigenständig deinstalliert werden können. Wenn das Paket alle seine Erweiterungen benötigt, um korrekt zu funktionieren, setzen Sie dies auf true oder 1.