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


7

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

回答:


6

私がお勧めすることは、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)

お役に立てれば


私がいることを信じている1し、9999整数であり、型キャストのための必要はありません。)
Farahmand

@Farahmand-使用できますが、大きな要件ではないと思います。私はしばらく前にこれについて実際に質問しました:joomla.stackexchange.com/questions/3738/… ..コンセプト/アプローチが正しいのでタイプキャスティングを使用することはなぜ賛成に値するのかわからない
Lodder

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

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


このアクションを実行するために追加のプラグインを使用することを提案していますか?では、@ johanのプラグインをダウンロードしているユーザーが、自動公開することを期待している場合はどうなりますか?彼はダウンロードする前にあなたが言及したこのプラグインをインストールすることを私に期待しますか?
Lodder 2014

@Lodder、質問はjohanによって作成されたプラグインの「カップル」についてであり、彼は「彼の」Webサイトにインストールしたいと考えています。もしあなたが言及した条件を彼が言っていたなら、私の答えは何か他のものでした;)
ファラマンド'27

@Farahmand、私は自分が開発したサイトで主にプラグインを使用していますが、それでも、プラグインをインストールして有効にして他のカップルを自動的に有効にすることは少しやり過ぎに思われます。しかし、コードをありがとう。
johanpw 2014

@johanpw、問題ありません。個人的にpostflightは、すべてのプラグインの関数を作成するのではなく、プラグインを使用することを好みます。やり過ぎではないと思います。すべてのプラグインをインストールしたらすぐに、プラグインをアンインストール/無効化できます。これが同様のケースの人々を助けることを願っています。
Farahmand 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.