Автоматически публиковать плагин после установки

Я создал несколько небольших плагинов, которые я устанавливаю на большинстве своих веб-сайтов. Но новые плагины (к счастью) отключены по умолчанию при установке. Я знаю, что это всего лишь несколько кликов, чтобы включить плагин, но можно ли включить мой плагин после завершения установки?

7 голосов | спросил johanpw 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 25 Sep 2014 06:10:10 +0400 2014, 06:10:10

2 ответа


5

То, что я бы рекомендовал сделать, это создать скрипт установки, который выполняет функцию postflight. Эта функция встроена в Joomla и будет выполнена после установки расширения.

Вы можете использовать что-то вроде этого:

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();     
    }
}

Для получения дополнительной информации о файле сценария прочитайте документацию Joomla:

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

Надеюсь, что это поможет

ответил Lodder 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 26 Sep 2014 17:44:29 +0400 2014, 17:44:29
1

Вы можете создать такой плагин:

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();
        }
    }
}

Установите и включите вышеупомянутый плагин перед установкой ваших плагинов.

ответил Farahmand 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 25 Sep 2014 10:59:59 +0400 2014, 10:59:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132