it-swarm.com.de

Plugin nach der Installation automatisch veröffentlichen

Ich habe ein paar kleine Plugins erstellt, die ich auf den meisten meiner Websites installiere. Aber neue Plugins sind (zum Glück) bei der Installation standardmäßig deaktiviert. Ich weiß, es sind nur ein paar Klicks, um das Plugin zu aktivieren, aber ist es möglich, mein Plugin selbst zu aktivieren, sobald die Installation abgeschlossen ist?

7
johanpw

Ich würde empfehlen, ein Installationsskript zu erstellen, das eine postflight -Funktion ausführt. Diese Funktion ist in Joomla integriert und wird nach der Installation der Erweiterung ausgeführt.

Sie könnten so etwas verwenden:

function postflight($type, $parent)
{
    // We only need to perform this if the extension is being installed, not updated
    if (strtolower($type) === 'install') 
    {       
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);

        $fields = array(
            $db->quoteName('enabled') . ' = 1',
            $db->quoteName('ordering') . ' = 9999'
        );

        $conditions = array(
            $db->quoteName('element') . ' = ' . $db->quote('plg_myplugin'), 
            $db->quoteName('type') . ' = ' . $db->quote('plugin')
        );

        $query->update($db->quoteName('#__extensions'))->set($fields)->where($conditions);

        $db->setQuery($query);   
        $db->execute();     
    }
}

Weitere Informationen zur Skriptdatei finden Sie in der Joomla-Dokumentation:

http://docs.joomla.org/J2.5:Managing_Component_Updates_ (Script.php)

Hoffe das hilft

6
Lodder

Sie können ein Plugin wie folgt erstellen:

class plgExtensionEnableMyPlugins extends JPlugin
{
    public function onExtensionAfterInstall($installer, $eid)
    {
        if ($eid)
        {
            $db = JFactory::getDbo();
            $db->setQuery("UPDATE #__extensions SET `enabled` = 1 WHERE `extension_id` = $eid AND `type` = 'plugin'");
            $db->execute();
        }
    }
}

Installieren und aktivieren Sie das obige Plugin, bevor Sie Ihre Plugins installieren.

1
Farahmand