कस्टम एक्सटेंशन विकास
कस्टम एक्सटेंशन विकास
परिचय
कस्टम एक्सटेंशन विकास मीडियाविकि (MediaWiki) प्लेटफॉर्म की क्षमताओं को बढ़ाने का एक शक्तिशाली तरीका है। मीडियाविकि एक लोकप्रिय मुक्त स्रोत विकि इंजन है, जिसका उपयोग विकिपीडिया (Wikipedia) सहित कई वेबसाइटों द्वारा किया जाता है। हालाँकि मीडियाविकि अपने आप में बहुत उपयोगी है, लेकिन अक्सर विशिष्ट आवश्यकताओं को पूरा करने के लिए अतिरिक्त कार्यक्षमता की आवश्यकता होती है। यहीं पर कस्टम एक्सटेंशन काम आते हैं।
यह लेख शुरुआती लोगों के लिए कस्टम एक्सटेंशन विकास का एक व्यापक परिचय है। हम एक्सटेंशन के मूल सिद्धांतों, विकास प्रक्रिया, आवश्यक उपकरण और सर्वोत्तम प्रथाओं को कवर करेंगे। हम कुछ सरल उदाहरणों पर भी विचार करेंगे ताकि आपको आरंभ करने में मदद मिल सके।
एक्सटेंशन क्या हैं?
मीडियाविकि एक्सटेंशन अनिवार्य रूप से PHP कोड के टुकड़े हैं जो मीडियाविकि इंस्टॉलेशन में अतिरिक्त कार्यक्षमता जोड़ते हैं। वे मीडियाविकि के मूल कोड को संशोधित किए बिना नई सुविधाएँ, टैग, विशेष पृष्ठ और बहुत कुछ जोड़ सकते हैं। एक्सटेंशन मीडियाविकि के विभिन्न पहलुओं को प्रभावित कर सकते हैं, जैसे कि संपादन, प्रशासन, उपयोगकर्ता प्रबंधन, और प्रस्तुति।
एक्सटेंशन को मीडियाविकि के `extensions/` निर्देशिका में रखा जाता है और मीडियाविकि कॉन्फ़िगरेशन फ़ाइल (`LocalSettings.php`) में सक्षम किया जाना चाहिए।
एक्सटेंशन विकास के लाभ
कस्टम एक्सटेंशन विकसित करने के कई लाभ हैं:
- **अनुकूलन:** आप मीडियाविकि को अपनी विशिष्ट आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं।
- **विस्तारशीलता:** आप मौजूदा कार्यक्षमता का विस्तार कर सकते हैं या नई सुविधाएँ जोड़ सकते हैं।
- **पुन: प्रयोज्यता:** एक्सटेंशन को अन्य मीडियाविकि इंस्टॉलेशन में आसानी से पुन: उपयोग किया जा सकता है।
- **रखरखाव:** एक्सटेंशन मीडियाविकि के मूल कोड को संशोधित करने की आवश्यकता को कम करते हैं, जिससे अपग्रेड और रखरखाव आसान हो जाता है।
- **समुदाय योगदान:** आप अपने एक्सटेंशन को मीडियाविकि समुदाय के साथ साझा कर सकते हैं, जिससे दूसरों को भी लाभ हो सके।
विकास वातावरण स्थापित करना
कस्टम एक्सटेंशन विकसित करने से पहले, आपको एक विकास वातावरण स्थापित करने की आवश्यकता होगी। इसमें निम्नलिखित शामिल हैं:
- **वेब सर्वर:** Apache या Nginx जैसे वेब सर्वर की आवश्यकता है।
- **PHP:** PHP 7.4 या बाद का संस्करण स्थापित होना चाहिए।
- **MySQL/MariaDB:** डेटाबेस के लिए MySQL या MariaDB की आवश्यकता होती है।
- **मीडियाविकि इंस्टॉलेशन:** मीडियाविकि का एक स्थानीय इंस्टॉलेशन स्थापित करें।
- **टेक्स्ट एडिटर/IDE:** Visual Studio Code, PHPStorm या Sublime Text जैसे टेक्स्ट एडिटर या इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट (IDE) का उपयोग करें।
- **संस्करण नियंत्रण:** Git जैसे संस्करण नियंत्रण प्रणाली का उपयोग करना अच्छा अभ्यास है।
एक्सटेंशन संरचना
एक मीडियाविकि एक्सटेंशन में आम तौर पर निम्नलिखित फ़ाइलें और निर्देशिकाएँ शामिल होती हैं:
- `extension.json`: यह फ़ाइल एक्सटेंशन के बारे में मेटाडेटा प्रदान करती है, जैसे कि नाम, विवरण, लेखक और निर्भरताएँ।
- `src/`: इस निर्देशिका में एक्सटेंशन का PHP कोड शामिल होता है।
- `languages/`: इस निर्देशिका में एक्सटेंशन के लिए भाषा फ़ाइलें शामिल होती हैं।
- `skins/`: इस निर्देशिका में एक्सटेंशन के लिए कस्टम स्किन फ़ाइलें शामिल होती हैं।
- `templates/`: इस निर्देशिका में एक्सटेंशन के लिए कस्टम टेम्पलेट फ़ाइलें शामिल होती हैं।
- `i18n/`: इस निर्देशिका में एक्सटेंशन के लिए अंतर्राष्ट्रीयकरण (i18n) फ़ाइलें शामिल होती हैं।
पहला एक्सटेंशन बनाना
आइए एक सरल एक्सटेंशन बनाएं जो एक विशेष पृष्ठ जोड़ता है जो "हेलो, वर्ल्ड!" प्रदर्शित करता है।
1. `extensions/MyFirstExtension` नामक एक नई निर्देशिका बनाएँ। 2. `extension.json` फ़ाइल बनाएँ और निम्नलिखित सामग्री जोड़ें:
```json {
"name": "MyFirstExtension", "version": "1.0", "description": "A simple extension that adds a special page.", "author": "Your Name", "url": "https://example.com", "license": "GPL-2.0+", "type": "extension"
} ```
3. `src/MyFirstExtension.php` नामक एक नई फ़ाइल बनाएँ और निम्नलिखित सामग्री जोड़ें:
```php <?php
class MyFirstExtension {
public static function onSpecialPage_init( &$title ) {
if ( $title->getNamespace() == NS_SPECIAL && $title->getText() === 'MySpecialPage' ) {
return true;
}
return false;
}
public static function onSpecialPage_perform( $title ) {
$output = new MWOutput();
$output->addHTML( '
Hello, World!
' ); $output->addHTML( '
This is my first MediaWiki extension.
' );
return $output; }
}
$wgHooks['SpecialPage_init'][] = 'MyFirstExtension::onSpecialPage_init'; $wgHooks['SpecialPage_perform'][] = 'MyFirstExtension::onSpecialPage_perform'; ```
4. `LocalSettings.php` फ़ाइल में निम्नलिखित पंक्ति जोड़कर एक्सटेंशन को सक्षम करें:
```php wfLoadExtension( 'MyFirstExtension' ); ```
5. मीडियाविकि को रीफ्रेश करें। अब आपको `Special:MySpecialPage` नामक एक नया विशेष पृष्ठ दिखाई देना चाहिए जो "हेलो, वर्ल्ड!" प्रदर्शित करता है।
एक्सटेंशन हुक
मीडियाविकि एक्सटेंशन हुक का उपयोग करके मीडियाविकि के विभिन्न पहलुओं को प्रभावित करते हैं। हुक विशिष्ट बिंदु हैं जहां आप अपने कोड को मीडियाविकि की निष्पादन प्रक्रिया में जोड़ सकते हैं।
कुछ सामान्य हुक में शामिल हैं:
- `ParserAfterTidy`: पृष्ठ सामग्री को पार्स करने के बाद।
- `ArticleSave`: लेख सहेजने से पहले या बाद में।
- `UserLogin`: उपयोगकर्ता के लॉगिन के बाद।
- `SpecialPage_init`: विशेष पृष्ठ आरंभ करने से पहले।
- `SpecialPage_perform`: विशेष पृष्ठ को निष्पादित करने के बाद।
आप मीडियाविकि डेवलपर नेटवर्क पर उपलब्ध हुक की पूरी सूची पा सकते हैं।
डेटाबेस के साथ काम करना
एक्सटेंशन अक्सर डेटाबेस के साथ इंटरैक्ट करते हैं ताकि डेटा को संग्रहीत और पुनर्प्राप्त किया जा सके। मीडियाविकि डेटाबेस इंटरफ़ेस का उपयोग करके डेटाबेस के साथ इंटरैक्ट किया जा सकता है।
उदाहरण के लिए, आप डेटाबेस से डेटा पुनर्प्राप्त करने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं:
```php $db = wfGetDB(); $result = $db->selectRow( 'mytable', '*', array( 'id' => 1 ) ); ```
आप डेटाबेस में डेटा सम्मिलित करने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं:
```php $db = wfGetDB(); $db->insert( 'mytable', array(
'name' => 'John Doe', 'email' => '[email protected]'
), __METHOD__); ```
भाषा फ़ाइलें
एक्सटेंशन के लिए भाषा फ़ाइलें अंतर्राष्ट्रीयकरण (i18n) का समर्थन करने के लिए आवश्यक हैं। भाषा फ़ाइलें संदेशों को विभिन्न भाषाओं में अनुवादित करने की अनुमति देती हैं।
भाषा फ़ाइलें `languages/` निर्देशिका में संग्रहीत हैं। प्रत्येक भाषा के लिए एक अलग फ़ाइल होनी चाहिए। उदाहरण के लिए, अंग्रेजी के लिए `languages/en.json` और फ्रेंच के लिए `languages/fr.json`।
भाषा फ़ाइलें JSON प्रारूप में हैं। प्रत्येक संदेश में एक कुंजी और एक अनुवादित मान होता है। उदाहरण के लिए:
```json {
"myextension-hello": "Hello, World!"
} ```
आप अपने PHP कोड में संदेशों को पुनर्प्राप्त करने के लिए `wfMessage()` फ़ंक्शन का उपयोग कर सकते हैं:
```php $message = wfMessage( 'myextension-hello' ); echo $message->text(); ```
सुरक्षा विचार
कस्टम एक्सटेंशन विकसित करते समय सुरक्षा एक महत्वपूर्ण विचार है। आपको निम्नलिखित सुरक्षा सर्वोत्तम प्रथाओं का पालन करना चाहिए:
- **इनपुट को मान्य करें:** उपयोगकर्ता इनपुट को हमेशा मान्य करें ताकि दुर्भावनापूर्ण कोड को निष्पादित करने से रोका जा सके।
- **आउटपुट को एस्केप करें:** आउटपुट को हमेशा एस्केप करें ताकि क्रॉस-साइट स्क्रिप्टिंग (XSS) हमलों को रोका जा सके।
- **SQL इंजेक्शन से बचें:** SQL इंजेक्शन हमलों से बचने के लिए पैरामीटराइज़्ड क्वेरी का उपयोग करें।
- **सुरक्षित फ़ाइलें अपलोड करें:** फ़ाइलें अपलोड करते समय, सुनिश्चित करें कि वे सुरक्षित हैं और दुर्भावनापूर्ण कोड शामिल नहीं हैं।
- **नियमित रूप से अपडेट करें:** अपने एक्सटेंशन को नवीनतम सुरक्षा पैच के साथ नियमित रूप से अपडेट करें।
डिबगिंग और परीक्षण
एक्सटेंशन विकसित करते समय, डिबगिंग और परीक्षण महत्वपूर्ण हैं। आप मीडियाविकि द्वारा प्रदान किए गए डिबगिंग टूल का उपयोग कर सकते हैं, जैसे कि PHP त्रुटि लॉग और डिबगिंग मोड।
आप अपने एक्सटेंशन का परीक्षण यह सुनिश्चित करने के लिए कर सकते हैं कि यह अपेक्षित रूप से काम करता है। आप यूनिट परीक्षण और एकीकरण परीक्षण लिख सकते हैं।
उन्नत विषय
- API एकीकरण: मीडियाविकि API के साथ अपने एक्सटेंशन को एकीकृत करें।
- टेम्पलेट इंजन: टेम्पलेट इंजन का उपयोग करके अपने एक्सटेंशन के लिए अधिक जटिल टेम्पलेट बनाएँ।
- जावास्क्रिप्ट एकीकरण: अपने एक्सटेंशन में जावास्क्रिप्ट जोड़ें।
- CSS अनुकूलन: अपने एक्सटेंशन के लिए कस्टम CSS बनाएँ।
निष्कर्ष
कस्टम एक्सटेंशन विकास मीडियाविकि प्लेटफॉर्म की क्षमताओं को बढ़ाने का एक शक्तिशाली तरीका है। इस लेख में, हमने एक्सटेंशन के मूल सिद्धांतों, विकास प्रक्रिया, आवश्यक उपकरण और सर्वोत्तम प्रथाओं को कवर किया है। इन सिद्धांतों का पालन करके, आप शक्तिशाली और उपयोगी एक्सटेंशन विकसित कर सकते हैं जो आपकी विशिष्ट आवश्यकताओं को पूरा करते हैं।
मीडियाविकि के बारे में अधिक जानकारी के लिए, मीडियाविकि डेवलपर नेटवर्क पर जाएँ।
अतिरिक्त संसाधन
- मीडियाविकि एक्सटेंशन निर्देशिका: मीडियाविकि समुदाय द्वारा बनाए गए एक्सटेंशन की एक सूची।
- मीडियाविकि डेवलपर दस्तावेज़: मीडियाविकि विकास के बारे में विस्तृत दस्तावेज़।
- मीडियाविकि समुदाय: मीडियाविकि उपयोगकर्ताओं और डेवलपर्स का समुदाय।
संबंधित रणनीतियाँ, तकनीकी विश्लेषण और वॉल्यूम विश्लेषण
- कैंडलस्टिक पैटर्न: बाइनरी विकल्पों में उपयोग किए जाने वाले महत्वपूर्ण पैटर्न।
- मूविंग एवरेज: रुझानों की पहचान करने के लिए उपयोग किया जाने वाला एक लोकप्रिय संकेतक।
- RSI (रिलेटिव स्ट्रेंथ इंडेक्स): ओवरबॉट और ओवरसोल्ड स्थितियों की पहचान करने के लिए उपयोग किया जाता है।
- MACD (मूविंग एवरेज कन्वर्जेंस डाइवर्जेंस): गति और रुझान की ताकत को मापने के लिए उपयोग किया जाता है।
- बोलिंगर बैंड: अस्थिरता के स्तर को मापने के लिए उपयोग किया जाता है।
- फिबोनैचि रिट्रेसमेंट: संभावित समर्थन और प्रतिरोध स्तरों की पहचान करने के लिए उपयोग किया जाता है।
- सपोर्ट और रेजिस्टेंस स्तर: मूल्य आंदोलनों को समझने के लिए महत्वपूर्ण।
- ट्रेडिंग वॉल्यूम: बाजार की ताकत और रुचि को मापने के लिए उपयोग किया जाता है।
- ट्रेंड लाइन्स: रुझानों की पहचान करने और संभावित प्रवेश/निकास बिंदुओं को निर्धारित करने के लिए उपयोग की जाती हैं।
- चार्ट पैटर्न: मूल्य आंदोलनों की भविष्यवाणियां करने के लिए उपयोग किए जाते हैं।
- जोखिम प्रबंधन: ट्रेडिंग में पूंजी की सुरक्षा के लिए महत्वपूर्ण।
- धन प्रबंधन: ट्रेडिंग पूंजी का कुशलतापूर्व
अभी ट्रेडिंग शुरू करें
IQ Option पर रजिस्टर करें (न्यूनतम जमा $10) Pocket Option में खाता खोलें (न्यूनतम जमा $5)
हमारे समुदाय में शामिल हों
हमारे Telegram चैनल @strategybin से जुड़ें और प्राप्त करें: ✓ दैनिक ट्रेडिंग सिग्नल ✓ विशेष रणनीति विश्लेषण ✓ बाजार की प्रवृत्ति पर अलर्ट ✓ शुरुआती के लिए शिक्षण सामग्री

