Est-il possible d'ajouter un bouton personnalisé (avec une action personnalisée, bien sûr) à la barre d'outils JToolbar d'un composant Joomla 3 standard (com_contents) sans modifier le code source d'origine?
Background: J'ai besoin d'ajouter un bouton au com_contents
écran principal (la liste de tous les articles) pour créer une fonction de messagerie massive. Je peux bien sûr modifier les fichiers Joomla standard, mais si je le modifie, lorsque je mets à niveau Joomla vers une nouvelle version, je perdrai ma personnalisation. Mais, si je peux ajouter le bouton, je ne perdrai aucun changement lors de la mise à jour ...
Et si c'est possible, comment peut-on le faire? Créer un plugin? Existe-t-il un tutoriel pour me guider dans la création de cet addon?
Voici une idée de brouillon utilisant un plugin:
Vous devez créer un plugin système (je ne vais pas entrer dans cela) et utiliser l'événement onBeforeRender
. À l'intérieur, vous obtenez une instance de votre barre d'outils et ajoutez le bouton.
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);
}
}
}
}
En travaillant de manière externe, vous pouvez créer un module Administrateur, un plug-in editors-xtd, ou un plug-in système. Dans les deux cas, lorsque votre code est exécuté, vous pouvez ajouter du code Javascript pour injecter le bouton à l'emplacement requis.