Aggiungi un pulsante personalizzato a un componente back-end principale


11

È possibile aggiungere un pulsante personalizzato (con un'azione personalizzata, ovviamente) alla JToolbar di un componente Joomla 3 standard (com_contents) senza modificare il codice sorgente originale?

Sfondo : ho bisogno di aggiungere un pulsante alla com_contentsschermata principale (l'elenco di tutti gli articoli) per creare un'enorme funzione di posta. Naturalmente, posso modificare i file standard di Joomla, ma se lo modifico, quando aggiorno Joomla a una nuova versione, perdo la mia personalizzazione. Ma, se in qualche modo posso aggiungere il pulsante, non perderò alcuna modifica durante l'aggiornamento ...

E se è possibile farlo, come si può fare? Stai creando un plugin? Esiste un tutorial che mi guidi attraverso la creazione di questo componente aggiuntivo?

Risposte:


10

Ecco una bozza di idea usando un plugin:

Devi creare un plug-in di sistema (non ci sto lavorando) e utilizzare l'evento onBeforeRender. All'interno si ottiene un'istanza della barra degli strumenti e si aggiunge il pulsante.

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

Grande! Esso funziona magicamente! Solo una piccola domanda: come posso passare gli elementi selezionati al mio controller? AFAIK, se utilizzo le funzioni standard di Joomla JS chiameranno il controller com_content, non è vero?
mHouses

1
Si prega di porre questa come una nuova domanda.
Valentin Despa,

4

Lavorando in modo esterno, è possibile creare un modulo amministratore , un plug-in editor-xtd o un plug-in di sistema . In entrambi i casi, quando il tuo codice viene eseguito, puoi aggiungere del codice Javascript per iniettare il pulsante nella posizione richiesta.

  • Modulo amministratore , verrà mostrato in una posizione, ad esempio menu . Può aggiungere qualsiasi cosa a tutte le pagine.
  • editors-xtd plug-in , verrà mostrato solo come pulsante sotto l'editor di testo. Può aprire una vista completa dal tuo componente.
  • plug-in di sistema , può fare qualsiasi cosa, ma non ha un'interfaccia utente da sola, come i casi precedenti.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.