Добавить пользовательскую кнопку в основной внутренний компонент


11

Можно ли добавить пользовательскую кнопку (с пользовательским действием, конечно) на панель JToolbar стандартного компонента Joomla 3 (com_contents) без изменения исходного исходного кода?

Справочная информация : мне нужно добавить кнопку на com_contentsглавном экране (список всех статей), чтобы создать большую функцию почты. Я могу, конечно, изменить стандартные файлы Joomla, но если я изменю его, при обновлении Joomla до новой версии я потеряю свою настройку. Но, если каким-то образом я могу добавить кнопку, я не потеряю никаких изменений при обновлении ...

И если это возможно, как это сделать? Создание плагина? Есть ли учебник, который поможет мне в создании этого аддона?

Ответы:


10

Вот черновик идеи с использованием плагина:

Вам нужно создать системный плагин (я не вхожу в это) и использовать событие onBeforeRender. Внутри вы получаете экземпляр панели инструментов и добавляете кнопку.

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);
            }
        }
    }
}

Большой! Отлично работает! Только маленький вопрос: как я могу передать выбранные элементы моему контроллеру? AFAIK, если я буду использовать стандартные функции Joomla JS, они будут вызывать контроллер com_content, не так ли?
mHouse

1
Пожалуйста, задайте это как новый вопрос.
Валентин Деспа

4

Работая внешним способом, вы можете создать модуль администратора , плагин editors-xtd или системный плагин . В обоих случаях, когда ваш код выполняется, вы можете добавить код Javascript, чтобы вставить кнопку в нужное место.

  • Модуль администратора , он будет показан в позиции, например, меню . Он может добавить что угодно на все страницы.
  • Плагин editors-xtd , он будет отображаться только в виде кнопки под текстовым редактором. Он может открыть полный вид из вашего компонента.
  • Системный плагин , он может делать все что угодно, но сам по себе не имеет пользовательского интерфейса, как в предыдущих случаях.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.