kutombawewe.net

Agregue un botón personalizado a un componente central del backend

¿Es posible agregar un botón personalizado (con una acción personalizada, por supuesto) a la JToolbar de un componente estándar de Joomla 3 (com_contents) sin modificar el código fuente original?

Fondo: Necesito agregar un botón a la com_contents pantalla principal (la lista de todos los artículos) para crear una función de correo masivo. Por supuesto, puedo modificar los archivos estándar de Joomla, pero si lo modifico, cuando actualice Joomla a una nueva versión, perderé mi personalización. Pero, si de alguna manera puedo agregar el botón, no perderé ningún cambio al actualizar ...

Y si es posible hacer esto, ¿cómo se puede hacer? ¿Crear un complemento? ¿Hay algún tutorial que me guíe a través de la creación de este complemento?

11
mHouses

Aquí hay una idea preliminar con un complemento:

Debe crear un complemento del sistema (no me estoy metiendo en eso) y usar el evento onBeforeRender. Dentro obtienes una instancia de tu barra de herramientas y anexas el botón.

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

Al trabajar de forma externa, puede crear un módulo de administrador, un complemento editors-xtd o un complemento del sistema. En ambos casos, cuando se ejecuta su código, puede agregar algún código Javascript para inyectar el botón en la ubicación requerida.

  • Módulo de administrador, se mostrará en una posición, por ejemplo menú . Puede agregar cualquier cosa a todas las páginas.
  • plugin editors-xtd, se mostrará solo como un botón debajo del editor de texto. Puede abrir una vista completa desde su componente.
  • plugin del sistema, puede hacer cualquier cosa, pero no tiene una interfaz de usuario en sí misma, como en los casos anteriores.
4
Anibal