web-dev-qa-db-ja.com

インストール後にプラグインを自動的に公開する

ほとんどのWebサイトにインストールする小さなプラグインをいくつか作成しました。ただし、新しいプラグインは、インストール時にデフォルトで(幸いにも)無効になっています。プラグインを有効にするのは数回クリックするだけですが、インストールが完了したらプラグインを有効にすることはできますか?

7
johanpw

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)

お役に立てれば

6
Lodder

次のようなプラグインを作成できます。

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

プラグインをインストールする前に、上記のプラグインをインストールして有効にします。

1
Farahmand