Je développe un Joomla! package qui a un composant et divers plugins, bibliothèques, modules et un modèle. J'ai un script d'installation au niveau du package et un script d'installation au niveau du composant (tous deux nommés script.mycomponent.php
). Je n'ai pas encore testé mon installation au niveau du package, mais le fichier de script au niveau du composant fonctionne correctement lorsque j'installe uniquement le composant.
Je remarque cependant que le fichier script.mycomponent.php
Est pas déplacé vers le répertoire administrator/com_mycomponent
De mon composant après l'installation. Je l'avais à l'arrière de ma tête quelque part qu'il est chargé dans la base de données, mais je ne vois aucune preuve de ce qui se passe ( OT: Joomla! Charge-t-il un exécutable PHP script dans la base de données? ).
Dois-je empaqueter deux copies du script d'installation dans mon processus de génération - une à la racine de l'archive des composants et une dans le dossier administrateur? Cela ne devrait-il pas se produire automatiquement par le Joomla! installateur?
J'ai le même problème (et des questions) concernant le fichier manifeste de mon composant (mycomponent.xml
). Est-il chargé dans la base de données? Dois-je en placer manuellement une copie dans mon répertoire administrator/com_mycomponent
Dans mon processus de génération? Où le fichier d'installation du package et le fichier manifeste sont-ils stockés après l'installation?
La réponse courte est, non, vous n'avez pas à copier installer les scripts n'importe où lorsque vous installez un package ou un composant (ou n'importe quelle extension Joomla). Cela se fait automatiquement.
Dans un peu plus de détails: pour les installations d'extensions Joomla, différentes classes d'adaptateurs sont responsables. Il commence par InstallerAdapter, puis il est étendu par PackageAdapter, ComponentAdapater, PluginAdapter et ainsi de suite ... pour tous les types d'extension.
L'adaptateur de package copie les fichiers XML du manifeste dans le dossier {joomla_root}/administrator/manifests et en même temps copie (s'il trouve une déclaration de script dans le manifeste) le fichier de script du programme d'installation du package dans {joomla_root}/administrator/manifests/your_package_name dossier.
La même chose se produit avec votre composant (même s'il est dans un package). L'adaptateur de composants copie le fichier de script du programme d'installation dans le administrator/'your_extension_root'
dossier (dans votre administrateur/racine de composant simplement).
Maintenant, d'après mon expérience, la chose la plus importante à garder à l'esprit est de vérifier votre XML manifeste que le nom correct est donné pour vos fichiers de script d'installation (s'il a été déclaré du tout dans le manifeste). À quelques reprises, j'ai simplement oublié de déclarer le fichier de script dans le fichier XML manifeste et je me demandais pourquoi le script ne s'exécutait pas et pourquoi je n'avais pas vu mes fichiers de script d'installation dans mon dossier racine d'extension). Si vous ne trouvez pas les fichiers de script d'installation copiés dans les chemins ci-dessus après l'installation, il y a probablement une erreur que vous avez commise dans votre fichier XML manifeste ou dans le nom du fichier de script d'installation.
La dénomination peut être importante: rester avec un FOF exemple (car je sais que c'est votre cas), si le nom de votre package est 'Akeeba' par exemple, alors le nom de votre fichier de script pourrait être: script.akeeba.php
et en même temps votre com_akeeba nom du fichier de script du composant pourrait être: script.com_akeeba.php
. Le nom pourrait également être simplement script.php
partout cependant et cela fonctionnerait toujours, mais il est préférable d'utiliser des noms distinctifs si nous développons un package. En ce qui concerne la copie automatique des scripts d'installation, il n'y a aucune différence entre les extensions basées sur FOF et les extensions Joomla normales.
Je ne crois pas qu'il y ait des scripts ou des fichiers manifestes stockés dans la base de données.
Le fichier manifeste de votre composant sera/devrait être stocké dans le répertoire administrateur/com_mycomponent dans le cadre du processus d'installation et ne nécessite aucun effort supplémentaire de votre part. Les fichiers manifestes des packages iront dans/administrator/manifests/packages/mypackage.
Si vous souhaitez stocker votre script d'installation avec votre composant, vous pouvez utiliser ces lignes dans votre fichier XML manifeste. Vous n'avez pas besoin d'avoir deux copies, mais je ne pense pas que les scripts d'installation soient stockés automatiquement avec le composant.
<scriptfile>install/install.script.php</scriptfile>
<administration>
<files>
<folder>install</folder>
</files>
</administration>
Terry