Çekirdek arka uç bileşenine özel düğme ekleme


11

Standart bir Joomla 3 bileşeni (com_contents) ait JToolbar için (tabii ki, özel bir eylem ile) özel bir düğme eklemek mümkün mü olmadan orijinal kaynak kodunu değiştirme?

Arka plan : com_contentsBüyük bir posta işlevi oluşturmak için ana ekrana bir düğme eklemeliyim (tüm makalelerin listesi). Elbette, standart Joomla dosyalarını değiştirebilirim, ancak değiştirirsem, Joomla'yı yeni bir sürüme yükselttiğimde özelleştirmemi kaybedeceğim. Ancak, bir şekilde düğmeyi ekleyebilirsem, güncellerken hiçbir değişikliği kaybetmeyeceğim ...

Ve bunu yapmak mümkünse, nasıl yapılabilir? Bir eklenti mi oluşturuyorsunuz? Bu eklentinin oluşturulmasında bana rehberlik edecek herhangi bir öğretici var mı?

Yanıtlar:


10

İşte bir eklenti kullanarak bir taslak fikir:

Bir sistem eklentisi (buna girmiyorum) oluşturmanız ve etkinliği kullanmanız gerekir onBeforeRender. İçeride Araç Çubuğunuzun bir örneğini alır ve düğmeyi eklersiniz.

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

Harika! Mucizevi şekilde çalışır! Sadece küçük bir soru: Seçilen öğeleri denetleyicime nasıl aktarabilirim? AFAIK, standart Joomla JS işlevlerini kullanırsam com_content denetleyicisini çağırırlar, değil mi?
mHouses

1
Lütfen bunu yeni bir soru olarak sorun.
Valentin Despa

4

Harici bir şekilde çalışarak bir Yönetici modülü , bir editör-xtd eklentisi veya bir sistem eklentisi oluşturabilirsiniz . Her iki durumda da, kodunuz yürütüldüğünde, düğmeyi gerekli konuma enjekte etmek için bazı Javascript kodu ekleyebilirsiniz.

  • Yönetici modülü , örneğin menü gibi bir konumda gösterilecektir . Tüm sayfalara her şeyi ekleyebilir.
  • editörler-xtd eklentisi ise , sadece metin editörü altında bir düğme olarak gösterilecektir. Bileşeninizden tam bir görünüm açabilir.
  • sistem eklentisi , herhangi bir şey yapabilir, ancak önceki durumlar gibi tek başına bir Kullanıcı Arayüzü yoktur.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.