Je crée un paquet Joomla qui installera des plugins et des fichiers image ensemble. Je souhaite copier les images du package sur le site Joomla à l'aide d'un script d'installation. Comment trouver le nom du répertoire d'installation temporaire afin de copier les fichiers?
Mon pkg_foo.Zip a la structure de répertoire suivante.
packages/plg_plugin1.Zip
packages/plg_plugin2.Zip
image.png
pkg_foo.xml
script.php
Et j'ai les éléments suivants dans script.php:
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
class pkg_fooInstallerScript
{
function install($parent) {
JFile::move( TEMPORARY_DIRECTORY . '/image.png', JPATH_ROOT . 'images/image.png';
}
}
}
Comment trouver le chemin d'accès au répertoire d'installation temporaire?
Vous pouvez utiliser la fonction postflight()
pour déplacer les images une fois que la fonction install()
a été exécutée et complétée, comme suit:
class pkg_fooInstallerScript
{
protected $extension = 'plg_myplugin';
public function install($parent)
{
// Do whatever you need to do when installing
}
public function postflight($type, $parent)
{
// Only run the code if we're installing, not updating.
if (strtolower($type) === 'install')
{
$imagePath = JPATH_SITE . '/plugins/' . $this->extension . '/images/image.png';
$newPath = JPATH_SITE . '/images/image.png';
JFile::move($imagePath, $newPath;
}
}
}
Pour obtenir le nom du répertoire d’installation temporaire à partir du script d’installation - script.php
, utilisez ceci:
function install($parent)
{
$temp_dir = $parent->getParent()->getPath('source');
}
et si vous en avez besoin pendant les mises à jour, placez-le dans la méthode de mise à jour.