Thêm một nút tùy chỉnh vào một thành phần phụ trợ cốt lõi


11

Có thể thêm nút tùy chỉnh (tất nhiên là có hành động tùy chỉnh) vào JToolbar của thành phần Joomla 3 tiêu chuẩn (com_contents) mà không sửa đổi mã nguồn gốc?

Bối cảnh : Tôi cần thêm một nút vào com_contentsmàn hình chính (danh sách tất cả các bài viết) để tạo chức năng thư lớn. Tất nhiên tôi có thể sửa đổi các tệp Joomla tiêu chuẩn, nhưng nếu tôi sửa đổi nó, khi tôi nâng cấp Joomla lên phiên bản mới, tôi sẽ mất tùy chỉnh. Nhưng, nếu bằng cách nào đó tôi có thể thêm nút, tôi sẽ không mất bất kỳ thay đổi nào khi cập nhật ...

Và nếu nó có thể làm điều này, làm thế nào nó có thể được thực hiện? Tạo một plugin? Có hướng dẫn nào để hướng dẫn tôi tạo ra addon này không?

Câu trả lời:


10

Đây là một ý tưởng dự thảo bằng cách sử dụng một plugin:

Bạn cần tạo một plugin hệ thống (tôi không tham gia vào đó) và sử dụng sự kiện này onBeforeRender. Bên trong, bạn nhận được một bản sao của Thanh công cụ và nối thêm nút.

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

Tuyệt quá! Nó hoạt động như một say mê! Chỉ có một câu hỏi nhỏ: Làm thế nào tôi có thể chuyển các mục đã chọn vào bộ điều khiển của mình? AFAIK, nếu tôi sử dụng các hàm Joomla JS tiêu chuẩn, họ sẽ gọi bộ điều khiển com_content, phải không?
mHouse

1
Hãy hỏi điều này như một câu hỏi mới.
Valentin Despa

4

Làm việc trong một cách bên ngoài, bạn có thể tạo một mô-đun quản trị , một plugin của tổng biên tập XTD , hoặc một plugin của hệ thống . Trong cả hai trường hợp, khi mã của bạn được thực thi, bạn có thể thêm một số mã Javascript để thêm nút vào vị trí cần thiết.

  • Mô-đun quản trị viên , nó sẽ được hiển thị ở một vị trí, ví dụ như menu . Nó có thể thêm bất cứ điều gì vào tất cả các trang.
  • trình soạn thảo trình cắm-xtd , nó sẽ chỉ được hiển thị dưới dạng một nút bên dưới trình soạn thảo văn bản. Nó có thể mở một cái nhìn đầy đủ từ thành phần của bạn.
  • Plugin hệ thống , nó có thể làm bất cứ điều gì, nhưng bản thân nó không có Giao diện người dùng, như các trường hợp trước.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.