web-dev-qa-db-ja.com

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

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

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

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

11
mHouses

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

システムプラグインを作成し(私はそれには入りません)、イベント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);
            }
        }
    }
}
10
Valentin Despa

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

  • 管理者モジュール、たとえばmenuなどの位置に表示されます。すべてのページに何でも追加できます。
  • editors-xtdプラグイン、テキストエディターの下のボタンとしてのみ表示されます。コンポーネントから完全なビューを開くことができます。
  • システムプラグイン、それは何でもできますが、前のケースのように、それ自体にはユーザーインターフェイスがありません。
4
Anibal