Package (pakket)

From Joomla! Documentation

This page is a translated version of the page Package and the translation is 70% complete.
Outdated translations are marked like this.

Opmerking over component afhankelijke modules

Soms gebruiken modules (of plugins etc.) modules van componenten en helpers en dergelijk. In dit geval zou het mooi zijn om het pakket van uw module op zo'n manier samen te stellen dat het gedeïnstalleerd wordt als de component zelf gedeïnstalleerd wordt. Dit wordt genoemd afhankelijkheid beheer wat gewenst is in joomla maar er nog niet in zit. Het advies is om de standaards te volgen en een pakket alleen te gebruiken zoals hieronder beschreven.

Wat is een pakket?

Een pakket is een extensie die gebruikt wordt om meerdere extensies in één keer te installeren. Dit wordt gebruikt indien u bijvoorbeeld een component en een module heeft dei van elkaar afhankelijk zijn. Het combineren in één pakket laat de gebruikers ze in één keer in- en deïnstalleren. Pakket-extensies kunnen gebruikt worden in Joomla Joomla 2.5 en hoger.

Hoe maak ik een pakket aan?

Een pakket extensie wordt aangemaakt door alle zip-bestanden van een extensie samen met een xml manifest bestand in te pakken (zippen). Als u bijvoorbeeld een pakket hebt bestaande uit:

  • component helloworld
  • module helloworld
  • library helloworld
  • system plugin helloworld
  • template helloworld

Het pakket moet de volgende boomstructuur in uw zipbestand hebben:

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

De pkg_helloworld.xml kan de volgende inhoud hebben:

 <?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>

Als u dit zipt en het probeert te installeren, ziet u dat iedere extensies geïnstalleerd is. Het pakket wordt ook zichtbaar in de extensie lijst om alle extensies uit het pakket te deïnstalleren.

Denk er aan om het pakket te deïnstalleren in plaats van de individuele subpakketten om te voorkomen dat er wezen ontstaan in extensiebeheer.

Id= <file id="not_arbitrary">

Het id element in <file ..> tag is NIET willekeurig!. Het "id=" moet ingesteld worden op de waarde van de "element" kolom in de "#__extensions" tabel. Indien ze niet juist zijn ingesteld bij het installeren van het pakket, worden de onderliggende items ( <file> ) NIET gevonden en gedeïnstallerd.

Plugin "group" attribute

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.

Manifest bestandsnaam en pakketnaam

De naam van het manifest bestand en de mogelijkheid om het pakketbestand zelf te kunnen deïnstalleren zijn nauw met elkaar verbonden Het manifest bestand moet een "pkg_" voorvoegsel hebben, de rest van de manifestnaam ( zonder .xml extensie ) moet gebruikt worden als <packagename>. Of, andersom, een pakket dat u wilt identificeren als "blurpblurp_J3" krijgt dat als zijn <packagename> en moet zitten in een manifest bestand genaamd "pkg_blurpblurp_J3.xml". Indien dat niet gedaan wordt, dan wordt het onmogelijk om het pakket te deïnstalleren.

Een optioneel <pkg_script.php> die een class pkg_<packagename>InstallerScript bevat met een public function postflight kan gebruikt worden (werkt in Joomla! 3.6).

Extensie tag

Vanaf Joomla 3.4, moet u de method="upgrade" opnemen in de <extension> tag als u wilt dat uw pakket zichzelf kan updaten bij opeenvolgende installaties.

Het version attribuut van de <extension> tag moet op de minimaal ondersteunde versie van Joomla voor dit pakket ingesteld worden. Indien uw pakket bijvoorbeeld alleen Joomla 3.2 en hoger ondersteunt, stel dit dan in op 3.2.

Note: This version attribute is purely optional. It has no influence on Joomla's installation routine. As of Joomla 4, the version attribute has therefore been removed from all core extensions. See pull request 29960 on github.com

Extensie deïnstallatie afhankelijkheid

Vanaf Jooma! 3.7.0, kan een pakket-extensie aangeven dat de onderliggende elementen niet gedeïnstalleerd kunnen worden los van een <blockChildUninstall>true</blockChildUninstall> element in het pakket manifest. Indien uw pakket alle extensies nodig heeft om juist te werken, zet dit dan op true of 1.