Tambahkan tombol kustom ke komponen backend inti

11

Apakah mungkin untuk menambahkan tombol kustom (dengan tindakan kustom, tentu saja) ke JToolbar dari komponen Joomla 3 standar (com_contents) tanpa mengubah kode sumber asli?

Latar Belakang : Saya perlu menambahkan tombol ke com_contentslayar utama (daftar semua artikel) untuk membuat fungsi surat besar. Saya tentu saja dapat memodifikasi file Joomla standar, tetapi jika saya memodifikasinya, ketika saya memutakhirkan Joomla ke versi baru saya akan kehilangan kustomisasi saya. Tapi, jika entah bagaimana saya dapat menambahkan tombol, saya tidak akan kehilangan perubahan saat memperbarui ...

Dan jika mungkin untuk melakukan ini, bagaimana bisa dilakukan? Membuat plugin? Apakah ada tutorial untuk memandu saya melalui pembuatan addon ini?

mHouse
sumber

Jawaban:

10

Berikut adalah konsep gagasan menggunakan plugin:

Anda perlu membuat plugin sistem (saya tidak membahasnya) dan menggunakan acara tersebut onBeforeRender. Di dalam Anda mendapatkan instance dari Toolbar Anda dan menambahkan tombol.

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);
            }
        }
    }
}
Valentin Despa
sumber
Bagus! Itu bekerja seperti pesona! Hanya sedikit pertanyaan: Bagaimana saya bisa mengirimkan barang yang dipilih ke controller saya? AFAIK, jika saya menggunakan fungsi Joomla JS standar, mereka akan memanggil pengontrol com_content, bukan?
mHouse
1
Silakan tanyakan ini sebagai pertanyaan baru.
Valentin Despa
4

Bekerja dengan cara eksternal, Anda dapat membuat modul Administrator , plug-in editor-xtd , atau plugin sistem . Dalam kedua kasus, ketika kode Anda dieksekusi, Anda dapat menambahkan beberapa kode Javascript untuk menyuntikkan tombol di lokasi yang diperlukan.

  • Modul Administrator , itu akan ditampilkan dalam posisi, misalnya menu . Itu dapat menambahkan apa saja ke semua halaman.
  • editor-xtd plug-in , itu akan ditampilkan hanya sebagai tombol di bawah editor teks. Itu dapat membuka tampilan penuh dari komponen Anda.
  • plugin sistem , dapat melakukan apa saja, tetapi tidak memiliki Antarmuka Pengguna dengan sendirinya, seperti kasus sebelumnya.
Anibal
sumber