desenv-web-rp.com

Adicionar um botão personalizado a um componente de back-end principal

É possível adicionar um botão personalizado (com uma ação personalizada, é claro) à JToolbar de um componente padrão do Joomla 3 (com_contents) sem modificar o código fonte original?

Plano de fundo: preciso adicionar um botão ao com_contents tela principal (a lista de todos os artigos) para criar uma função de email em massa. É claro que posso modificar os arquivos padrão do Joomla, mas se eu modificá-lo, quando atualizar o Joomla para uma nova versão, perderei minha personalização. Mas, se de alguma forma eu puder adicionar o botão, não perderei nenhuma alteração ao atualizar ...

E se é possível fazer isso, como isso pode ser feito? Criando um plugin? Existe algum tutorial para me guiar através da criação deste addon?

11
mHouses

Aqui está uma ideia preliminar usando um plug-in:

Você precisa criar um plugin do sistema (não estou entrando nisso) e usar o evento onBeforeRender. Dentro, você obtém uma instância da sua barra de ferramentas e acrescenta o botão.

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

Trabalhando de maneira externa, você pode criar um módulo Administrador, um plug-in editores-xtd ou um plug-in do sistema. Nos dois casos, quando seu código é executado, você pode adicionar algum código Javascript para injetar o botão no local necessário.

  • módulo Administrator, ele será mostrado em uma posição, por exemplo menu . Pode adicionar qualquer coisa a todas as páginas.
  • plug-in editors-xtd, ele será mostrado apenas como um botão no editor de texto. Pode abrir uma visão completa do seu componente.
  • plugin do sistema, ele pode fazer qualquer coisa, mas não possui uma interface de usuário por si só, como nos casos anteriores.
4
Anibal