web-dev-qa-db-fra.com

Est-il possible de créer un script pour installer deux plugins à la fois

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();    
    }
}
1
n.h.

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:

https://docs.joomla.org/Package

2
Lodder

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.

1
Nick