कभी-कभी अधिक कार्यक्षमता पाने के लिए या कुछ अन्य प्रकार के कार्य करने के लिए कोर कक्षाओं को ओवरराइड करने की आवश्यकता होती है। क्या कोर कक्षाओं को ओवरराइड करने का कोई तरीका है? अगर यह मुमकिन है तो मैं किन मुद्दों का सामना करके उन्हें पछाड़ सकता हूं?
कभी-कभी अधिक कार्यक्षमता पाने के लिए या कुछ अन्य प्रकार के कार्य करने के लिए कोर कक्षाओं को ओवरराइड करने की आवश्यकता होती है। क्या कोर कक्षाओं को ओवरराइड करने का कोई तरीका है? अगर यह मुमकिन है तो मैं किन मुद्दों का सामना करके उन्हें पछाड़ सकता हूं?
जवाबों:
हाँ यह संभव है।
आप कक्षाओं को ओवरराइड करने के लिए एक सिस्टम प्लगइन का उपयोग कर सकते हैं, कृपया इस लिंक और इस और इसे पढ़ें
दो समस्याओं का सामना करना पड़ेगा:
आपको पूरी कक्षा को ओवरराइड करने की ज़रूरत है (न कि इसके कुछ हिस्सों को)
यदि कोर अपडेट किया गया है और क्लास भी अपडेट / बदल गया है, तो आपको अपना ओवरराइड (यदि आवश्यक हो) अपडेट करना होगा।
मैंने थोड़ी देर पहले एक प्लगइन बनाया था जो आपको कोर कक्षाओं को ओवरराइड करने की अनुमति देता है, लेकिन यह अभी भी उन समस्याओं का शिकार है जो @jackJoe ने अपने जवाब में बताया। हालांकि, यह आपको ओवरराइड्स को सफाई से करने की अनुमति देता है।
components/com_content/models/articles.php
।
जूमला 3 उपयोगकर्ताओं के लिए - इनकी जाँच करें। यह तुम्हे मदद करेगा।
जूमला 3 में एमवीसी कक्षाएं ओवरराइड करें
प्लगइन - https://github.com/ghazal/plg_mvcoverride
http://docs.joomla.org/How_to_override_the_component_mvc_from_the_Joomla!_core
धन्यवाद /joomla//users/270/ghazal
मैं बहुत लंबे समय से इस पर था और डॉन से वादा किया था कि एक बार जब मैं करूंगा तो इसके बारे में अधिक जानकारी दूंगा।
मुझे घटकों के लिए जूमला एमवीसी को ओवरराइड करने की आवश्यकता है और जूमला को अपने प्लगइन एचटीएमएल फ़ोल्डर में ओवरराइड्स देखने के लिए कहना है, न केवल टेम्पलेट एचटीएमएल फ़ोल्डर के अंदर।
मुझे कभी भी पसंद नहीं आया जब डेवलपर्स वास्तव में जूमला डिफ़ॉल्ट वर्ग लेते हैं और इसके साथ गड़बड़ करते हैं, इसलिए मैं उस वर्ग का विस्तार करता हूं यदि मैं कर सकता हूं, तो कुछ ब्रेक लगाने के बजाय।
मेरी प्रक्रिया निम्नलिखित है।
यहाँ छवि बल्कि http://prntscr.com/3d9syq है
नीचे दिए गए स्निपेट में पहले भाग की जाँच की जा रही है कि उपयोगकर्ता कहाँ है, अगर वह जूमला को अपडेट करने वाला है तो मैं अस्थायी वर्ग की फ़ाइलों को हटा रहा हूं जो यह सुनिश्चित करने के लिए बनाए गए थे कि अपडेट पूरा होने पर हम नए प्राप्त करें जो कि जैकजेट नंबर की देखभाल करता है। 2।
if (($this->Input('option') == 'com_joomlaupdate' && $this->Input('task') == 'update.install') || ($this->Input('option') == 'com_joomlaupdate' && $this->Input('layout') == 'complete')) {
JFolder::delete(JPATH_SITE . '/plugins/system/yjsg/includes/yjsgcore/classes/extend/classes/');
JFolder::create(JPATH_SITE . '/plugins/system/yjsg/includes/yjsgcore/classes/extend/classes/');
$indexContent = '';
JFile::write(JPATH_SITE . '/plugins/system/yjsg/includes/yjsgcore/classes/extend/classes/index.html', $indexContent);
}
$YjsgJViewDefaultRead = JPATH_LIBRARIES . '/legacy/view/legacy.php';
$YjsgJViewDefaultFile = YJSGEXTEND . "classes" . YJDS . "Yjsg" . $isView . "Default" . $IsJversion . ".php";
//extend JView library class
if (!JFile::exists($YjsgJViewDefaultFile)) {
$YjsgJViewDefault = JFile::read($YjsgJViewDefaultRead);
$YjsgJViewDefault = str_replace('class ' . $isView, 'class Yjsg' . $isView . 'Default', $YjsgJViewDefault);
JFile::write($YjsgJViewDefaultFile, $YjsgJViewDefault);
}
require_once($YjsgJViewDefaultFile);
jimport('joomla.application.component.view');
JLoader::register($isView, YJSGEXTEND . $IsJversion . '/component/view.php', true);