È 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?
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);
}
}
}
}
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.