it-swarm-eu.dev

Aggiungi un pulsante personalizzato a un componente back-end principale

È 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?

Background: devo aggiungere un pulsante a com_contents schermata 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 per guidarmi attraverso la creazione di questo componente aggiuntivo?

11
mHouses

Ecco una bozza di idea usando un plugin:

Devi creare un plug-in di sistema (non sto entrando in quello) e usare 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);
            }
        }
    }
}
10
Valentin Despa

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 viene eseguito il codice, è possibile 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.
  • plug-in editors-xtd, verrà mostrato solo come pulsante sotto l'editor di testo. Può aprire una vista completa dal tuo componente.
  • plugin di sistema, può fare qualsiasi cosa, ma non ha un'interfaccia utente da sola, come i casi precedenti.
4
Anibal