एक कोर बैकएंड घटक में एक कस्टम बटन जोड़ें


11

क्या मूल स्रोत कोड को संशोधित किए बिना एक मानक Joomla 3 घटक (com_contents) के JToolbar में एक कस्टम बटन (निश्चित रूप से एक कस्टम कार्रवाई के साथ) जोड़ना संभव है ?

पृष्ठभूमि : मुझे com_contentsएक बड़े मेल फ़ंक्शन को बनाने के लिए मुख्य स्क्रीन (सभी लेखों की सूची) में एक बटन जोड़ने की आवश्यकता है । मैं, निश्चित रूप से, मानक जूमला फ़ाइलों को संशोधित कर सकता हूं, लेकिन अगर मैं इसे संशोधित करता हूं, तो जब मैं जूमला को एक नए संस्करण में अपग्रेड करता हूं तो मैं अपना अनुकूलन खो देता हूं। लेकिन, अगर किसी तरह मैं बटन जोड़ सकता हूं, तो अपडेट करते समय मैं कोई बदलाव नहीं खोऊंगा ...

और अगर ऐसा करना संभव है, तो यह कैसे किया जा सकता है? एक प्लगइन बनाना? क्या इस ऐडऑन के निर्माण के लिए मेरा मार्गदर्शन करने के लिए कोई ट्यूटोरियल है?

जवाबों:


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 कंट्रोलर को कॉल करेंगे, है ना?
एमएचओज

1
कृपया इसे एक नया प्रश्न मानें।
वैलेंटाइन देस्पा

4

बाहरी तरीके से काम करते हुए, आप एक व्यवस्थापक मॉड्यूल , एक संपादक-एक्सडीटी प्लग-इन या एक सिस्टम प्लगइन बना सकते हैं । दोनों मामलों में, जब आपका कोड निष्पादित होता है, तो आप आवश्यक स्थान में बटन को इंजेक्ट करने के लिए कुछ जावास्क्रिप्ट कोड जोड़ सकते हैं।

  • व्यवस्थापक मॉड्यूल , यह एक स्थिति में दिखाया जा रहा है, उदाहरण के लिए मेनू । यह सभी पृष्ठों में कुछ भी जोड़ सकता है।
  • संपादकों- xtd प्लग-इन , यह केवल पाठ संपादक के तहत एक बटन के रूप में दिखाया जाने वाला है। यह आपके घटक से पूर्ण दृश्य खोल सकता है।
  • सिस्टम प्लगइन , यह कुछ भी कर सकता है, लेकिन इसमें पिछले मामलों की तरह, अपने आप से एक यूजर इंटरफेस नहीं है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.