Joomla Update Server
Inhalt
1. Allgemein
2. Funktion
3. Extension und Collection
4. Collection -XML-Datei Elemente
5. Extension -XML-Datei Elemente
6. Einbinden
7. Beispiele
8. Tipps / Hinweise
9. Quellen
Allgemein
Seit Joomla 2.5.4 gibt es in Joomla eine einheitliche Möglichkeit Updates für Erweiterungen anzubieten. Auch ein Joomla Core Update kann seit dem direkt über das Backend gemacht werden ohne das Paket selber downloaden und hochladen zu müssen.
Diese Anleitung erklärt das erstellen und betreiben eines Update Servers mit Beispielen für alle Erweiterungstypen.
Funktion
Update Server hört sich etwas kompliziert an im Grunde ist es aber nur ein URL zu einer XML-Datei welcher in der Installations-XML-Datei angegeben wird. Diese XML-Datei enthält dann eine Reihe von Angaben u.a. die neue Version und den Download-URL welchen Joomla auslesen kann. Sollte Joomla ein Update finden wird dies im Kontrollzentrum (Backend) angezeigt.
Extension und Collection.
Die Joomla Update Funktion kennt zwei Typen von Update XML-Dateien. Einmal „extension“ und einmal „collection“. Die „extension“-XML Datei enthält alle Informationen über die Erweiterung. Mit „collection“ kann man eine Art Priorisierung vornehmen. Dabei wird die Datei von oben nach unten gelesen.
Collection-XML-Datei Elemente
XML-Datei Element | Beschreibung | Optional/Pflicht |
<extensionset> | Äußerster Container er umschließt alle Erweiterungen. Dieser enthält auch einen Namen (name="") und eine Beschreibung (description="") | Pflicht |
<extension> | Container für jede einzelne Erweiterung enthält die untenstehenden Elemente | Pflicht |
<extension> Element |
Beschreibung | Optional/Pflicht |
name="" | Name der Erweiterung | Pflicht |
element="" | Element (siehe #__extentions Tabelle) der Erweiterung | Pflicht |
typ="" | Erweiterungstyp: component, module, plugin, package oder file | Pflicht |
folder="" | Plugin Ordner: z.B. system, content, ... | Pflicht bei Plugins |
client="" |
Client: site oder administrator |
Pflicht wenn der Client administrator ist da sonst automatisch site genommen wird |
version="" | Aktuelle Version | Pflicht |
targetplatformversion="" | Für welche Version von Joomla ist die Erweiterung geignet. | Optional |
detailsurl="" | URL zur extension.xml Datei | Pflicht |
Extension-XML-Datei Elemente
XML-Datei Element | Beschreibung | Optional/Pflicht |
<updates> | Äußerste Updates Container er umschließt alle Updates | Pflicht |
<update> | Update Container er umschließt jedes Update | Pflicht |
<name> | Name der Erweiterung | Pflicht |
<description> | Beschreibung der Erweiterung | Optional |
<element> | Element der Erweiterung | Pflicht |
<type> | Typ der Erweiterung (components/module/plugin/file/package) | Pflicht |
<folder> | Plugin Ordner: z.B. system, content, ... | Pflicht bei Plugins |
<version> | Aktuelle Version der Erweiterung | Pflicht |
<infourl> | Info URL z.B. URL zur Release Meldung | Optional |
<client> |
Client der Erweiterung (site oder administrator) |
Pflicht |
<group> | Gruppe der Erweiterung | Optional |
<downloads> | Download Container enthält den Download URL Container | Pflicht |
<downloadurl> | Download URL Container enthält den Pfad, Typ und das Format des Downloads | Pflicht |
<tags> | Tags Container enthält verschiedene 'tag' Container | Optional |
<tag> |
Tag Container enthält einen Tag. Welcher aussagt wie stabil die Version ist (erst ab 3.4+) dev: Entwicklerversion, sehr unstabiel z.B. nightly builds |
Optional |
<maintainer> | Maintainer Container enthält z.B. den Namen des Entwickers | Optional |
<maintainerurl> | Maintainer URL Container enthält z.B. die Webseite des Entwickers | Optional |
<category> | Kategorie der Erweiterung | Optional |
<relationships> | Beziehungen der Erweiterung | Optional |
<targetplatform> |
Der Targetplatform Container enthält mindestens den Platformnamen (P) sowie die Mindestversion (P) und kann zusätzlich eine Mini- oder Maximale Maintenanceversion enthalten (O) Beispiele: |
Pflicht |
<php_minimum> | Der PHP Minimum Container enthält die für die Erweiterung minimal erforderliche PHP Version. | Optional |
<supported_databases> | Der Unterstütze Datenbanken Container enthält die für die Erweiterung minimal erforderlichen Datenbanktypen und deren Version Beispiel: <supported_databases mysql="5.5.3" postgresql="9.2" mssql="10.50.1600.1" />. (Dieser wird erst ab 3.7.0 aufwährts unterstützt.) | Optional |
Beispiele:
Einbinden
Um einen Update Server für eine Erweiterung bekannt zu machen muss man ihn in der Installations-XML-Datei hinzufügen. Dazu gibt es einen eigenen Tag <updateserver>.
Beispiel (keine Zeilenumbrüche in den URLs!):
<updateservers>
<server type="collection" name="Collection Updates" priority="1">http://update.example.org/collection.xml</server>
<server type="extension" name="Extension Updates" priority="2">http://update.example.org/extension.xml</server>
</updateservers>
Diese URLs (collection und extension) werden vom Joomla Updater überprüft und finden sich später in der Datnbank tabelle #__update_sites wieder.
Tipps / Hinweise
Für kommerzielle Erweiterungen gibt es auch eine Möglichkeit Updates über den Updater anzubieten. Siehe:
- Allow commercial (for a fee) components to use the Joomla! extensions update feature [3.2.x]
- Improved Joomla! extensions update handling of paid for extensions [3.2.x] [2.5.x]
- Implement helper hooks for the updater [3.7.x]
Quellen:
- Axel Tüting, Christiane Maier-Stadtherr und René Serradeil (2012). Joomla!-Extentions entwickeln. Haar bei München: Franzis Verlag.
- Joomla Dokumentation: Deploying an Update Server
- Add support for checking minimum PHP version in XML update stream [2.5.x]
- Add Minimum Stability feature in Joomla! Extensions Update