핵심 백엔드 구성 요소에 사용자 정의 버튼 추가


11

원래 소스 코드를 수정 하지 않고 표준 Joomla 3 구성 요소 (com_contents)의 JToolbar에 사용자 정의 단추 (물론 사용자 정의 조치 포함)를 추가 할 수 있습니까?

배경 : 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 컨트롤러를 호출합니까?
mHoouss

1
이 질문을 새로운 질문으로하십시오.
Valentin Despa

4

외부 방식으로 작업하면 관리자 모듈 , editors-xtd 플러그인 또는 시스템 플러그인을 작성할 수 있습니다 . 두 경우 모두 코드가 실행될 때 Javascript 코드를 추가하여 필요한 위치에 버튼을 삽입 할 수 있습니다.

  • 관리자 모듈메뉴 와 같은 위치에 표시 됩니다. 모든 페이지에 무엇이든 추가 할 수 있습니다.
  • editors-xtd plug-in 에서는 텍스트 편집기 아래에 버튼으로 만 표시됩니다. 컴포넌트에서 전체보기를 열 수 있습니다.
  • 시스템 플러그인 , 그것은 아무것도 할 수 있지만, 이전의 경우와 같이 자체적으로 사용자 인터페이스를 가지고 있지 않습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.