Fügen Sie einer Kern-Backend-Komponente eine benutzerdefinierte Schaltfläche hinzu

11

Ist es möglich, der JToolbar einer Standard-Joomla 3-Komponente (com_contents) eine benutzerdefinierte Schaltfläche (natürlich mit einer benutzerdefinierten Aktion) hinzuzufügen, ohne den ursprünglichen Quellcode zu ändern ?

Hintergrund : Ich muss dem com_contentsHauptbildschirm (der Liste aller Artikel) eine Schaltfläche hinzufügen , um eine massive E-Mail-Funktion zu erstellen. Ich kann natürlich die Standard-Joomla-Dateien ändern, aber wenn ich sie ändere, verliere ich meine Anpassung, wenn ich Joomla auf eine neue Version aktualisiere. Aber wenn ich die Schaltfläche irgendwie hinzufügen kann, verliere ich beim Aktualisieren keine Änderungen ...

Und wenn es möglich ist, wie kann es getan werden? Ein Plugin erstellen? Gibt es ein Tutorial, das mich durch die Erstellung dieses Addons führt?

mHäuser
quelle

Antworten:

10

Hier ist ein Entwurf einer Idee mit einem Plugin:

Sie müssen ein System-Plugin erstellen (darauf komme ich nicht ein) und das Ereignis verwenden onBeforeRender. Im Inneren erhalten Sie eine Instanz Ihrer Symbolleiste und fügen die Schaltfläche hinzu.

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);
            }
        }
    }
}
Valentin Despa
quelle
Groß! Es wirkt wie ein Zauber! Nur eine kleine Frage: Wie kann ich die ausgewählten Elemente an meinen Controller übergeben? AFAIK, wenn ich die Standardfunktionen von Joomla JS verwende, rufen sie den com_content-Controller auf, nicht wahr?
mHouses
1
Bitte stellen Sie dies als neue Frage.
Valentin Despa
4

Wenn Sie extern arbeiten, können Sie ein Administratormodul , ein editors-xtd-Plug-In oder ein System-Plugin erstellen . In beiden Fällen können Sie bei der Ausführung Ihres Codes Javascript-Code hinzufügen, um die Schaltfläche an der gewünschten Stelle einzufügen.

  • Administrator-Modul , es wird in einer Position angezeigt, zum Beispiel Menü . Es kann allen Seiten alles hinzugefügt werden.
  • editors-xtd Plug-In , es wird nur als Schaltfläche unter dem Texteditor angezeigt. Es kann eine vollständige Ansicht Ihrer Komponente öffnen.
  • System-Plugin , es kann alles, aber es hat keine eigene Benutzeroberfläche, wie in den vorherigen Fällen.
Anibal
quelle