コアバックエンドコンポーネントにカスタムボタンを追加する


11

元のソースコード変更せずに、標準のJoomla 3コンポーネント(com_contents)のJToolbarにカスタムボタン(もちろん、カスタムアクション付き)を追加することはできますか?

背景com_contents大規模なメール機能を作成するには、メイン画面(すべての記事のリスト)にボタンを追加する必要があります。もちろん、標準のJoomlaファイルを変更することはできますが、変更した場合、Joomlaを新しいバージョンにアップグレードすると、カスタマイズが失われます。しかし、どういうわけかボタンを追加できれば、更新時に変更を失うことはありません...

そして、これが可能なら、どうすればできるのでしょうか?プラグインを作成しますか?このアドオンの作成をガイドするチュートリアルはありますか?

回答:


10

プラグインを使用したアイデア案は次のとおりです。

あなたはシステムプラグインを作成する必要があります(私はそれには入りません)そしてイベントを使用する必要がありますonBeforeRender。内部では、ツールバーのインスタンスを取得し、ボタンを追加します。

class PlgSystemCustomtoolbar extends JPlugin
{
    public function onBeforeRender()
    {
        // Get the application object
        $app = JFactory::getApplication();

        // Run in backend
        if ($app->isAdmin() === true)
        {
            // Get the input object
            $input = $app->input;

            // Append button just on Articles
            if ($input->getCmd('option') === 'com_content' && $input->getCmd('view', 'articles') === 'articles')
            {
                // Get an instance of the Toolbar
                $toolbar = JToolbar::getInstance('toolbar');

                // Add your custom button here
                $url = JRoute::_('index.php?option=com_example&task=massemail&format=raw');
                $toolbar->appendButton('Link', 'export', 'Mass Email', $url);
            }
        }
    }
}

すごい!それは魅力のように機能します!ほんの少しの質問:選択したアイテムをコントローラーに渡すにはどうすればよいですか?私の知る限り、私が標準のJoomla JS関数を使用すると、それらはcom_contentコントローラーを呼び出しますよね?
mHouses 2014

1
これは新しい質問として質問してください。
Valentin Despa 2014

4

外部で作業する場合は、管理者モジュールeditors-xtdプラグイン、またはシステムプラグインを作成できます。どちらの場合でも、コードを実行するときに、JavaScriptコードを追加して、ボタンを必要な場所に挿入できます。

  • 管理者モジュール、たとえばmenuのような位置に表示されます。すべてのページに何でも追加できます。
  • editors-xtdプラグイン。テキストエディターの下にボタンとしてのみ表示されます。コンポーネントから完全なビューを開くことができます。
  • システムプラグイン、それは何でもできますが、前のケースのように、それ自体にはユーザーインターフェイスがありません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.