J'ai deux plugins et j'ai besoin de les emballer ensemble. Est-il possible de créer un script pour installer deux plugins à la fois? Et auto publier un seul d'entre eux?
Ce script fonctionne pour un:
public function postflight($route, JAdapterInstance $adapter)
{
// We only need to perform this if the extension is being installed, not updated.
if ( $route == 'install' )
{
// Get a database object.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
$fields = array(
$db->quoteName('enabled') . ' = ' . (int) 1
);
$conditions = array(
$db->quoteName('element') . ' = ' . $db->quote('plugin_name'),
$db->quoteName('folder') . ' = ' . $db->quote('plugin_group')
);
$query->update($db->quoteName('#__extensions'))->set($fields)->where($conditions);
// Set the query and load the result.
$db->setQuery($query);
$result = $db->query();
}
}
Vous n'avez pas besoin d'utiliser le fichier d'installation install.php pour installer des plug-ins séparés. Pour cela, vous pouvez simplement utiliser votre fichier XML.
Donc, tout d’abord, assurez-vous de définir le type d’extension comme un paquet, comme ceci:
<extension type="package" version="3.3" method"upgrade">
Ensuite, ajoutez ce qui suit à votre XML:
<files folder="packages">
<file type="plugin" id="helloworld" group="system">plg_sys_helloworld.Zip</file>
<file type="plugin" id="helloworld2" group="system">plg_sys_helloworld2.Zip</file>
</files>
Pour plus d'informations à ce sujet (, veuillez lire ceci ), consultez les éléments suivants:
L'installation avec package est la plus appropriée dans ce cas, comme l'a suggéré @Lodder.
Mais au cas où vous ne voudriez pas aller de l'avant avec le paquet, alors il existe un autre.
Vous pouvez l'installer en utilisant JInstaller
class.
$installer = new JInstaller();
$installer->install($path);
ici $path
contiendra le chemin de l’autre plugin que vous voulez installer. Vous pouvez inclure le code de plug-in associé dans le même fichier Zip et indiquer ce chemin.
Vous pouvez donc ajouter ce code dans la méthode postflight
du script d'installation du plugin.
À propos de l'état d'activation du plug-in, le plug-in restera désactivé par défaut lors de l'installation. Et en cas de mise à niveau du plugin, l'état précédent sera maintenu.