web-dev-qa-db-fra.com

Ajouter un bouton personnalisé à un composant principal du backend

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?

11
mHouses

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);
            }
        }
    }
}
10
Valentin Despa

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.

  • module Administrateur, il sera affiché dans une position, par exemple du menu . Il peut ajouter n'importe quoi à toutes les pages.
  • plug-in editors-xtd, il ne sera affiché que comme un bouton sous l'éditeur de texte. Il peut ouvrir une vue complète de votre composant.
  • plugin système, il peut tout faire, mais il n’a pas d’interface utilisateur en soi, comme dans les cas précédents.
4
Anibal