हाल ही में, मुझे XenForo इंजन पर चल रहे फोरम के सहायता अनुभाग में एक अलग पृष्ठ बनाने की आवश्यकता थी। जैसा कि यह निकला, यह सरल बना। इसके अलावा, हमें इंजन के कोड को स्वयं संपादित नहीं करना था, जो कि स्वाभाविक है, भविष्य में, कर्नेल को अपडेट करते समय, जीवन हमारे लिए आसान हो जाएगा। तुरंत एक आरक्षण करें कि लेख अभिनव की श्रेणी से नहीं है, बल्कि खुद के लिए कैसे-कैसे है।

इसलिए, हमें
क्रमशः केवल 2
Help.php और
LoadClassController.php फाइलें बनाने की आवश्यकता है, उन्हें क्रमशः
कंट्रोलर रिपब्लिक और
श्रोता फ़ोल्डर में
बिखेरते हुए।
Help.php सामग्री<?php class AnyFolder_ControllerPublic_Help extends XFCP_AnyFolder_ControllerPublic_Help { public function actionYouaction() { return $this->_getWrapper('youaction', $this->responseView('XenForo_ViewPublic_Help_ouaction', 'help_youaction') ); } }
LoadClassController.php की सामग्री <?php class AnyFolder_Listener_LoadClassController { public static function extendHelpController($class, array &$extend) { if ($class == 'XenForo_ControllerPublic_Help') { $extend[] = 'AnyFolder_ControllerPublic_Help'; } } }
परिणामस्वरूप, हमें दस्तावेजों के निम्नलिखित पेड़ प्राप्त करने चाहिए
लाइब्रेरी फोल्डर में हमारे डॉक्यूमेंट ट्री को भरें। उसके बाद हम उसी फोल्डर (
लाइब्रेरी ) में
config.php फाइल को ओपन करते हैं और वहां डिबगिंग मोड को इनेबल कर देते हैं
$config['debug'] = true;
हमने व्यवस्थापक पैनल में विकास टैब तक पहुंच प्राप्त करने के लिए डिबगिंग मोड चालू किया। इस टैब पर, हमें एक नई ईवेंट बनाने की आवश्यकता है। ऐसा करने के लिए,
ईवेंट हैंडलर खोलें →
एक नया ईवेंट बनाएं (या तुरंत फॉर्म के ब्राउज़र में एक लिंक खोलें
http://example.com/path_you_forum/admin.php?code-event-listeners/add )।
अब हम
load_class_controller घटना का चयन करते हैं, हम हैंडलर निर्दिष्ट करते हैं
AnyFolder_Listener_LoadClassController :: ExtendedHelpController । शेष को अपरिवर्तित छोड़ दिया गया है।
अब यह टेम्प्लेट पर निर्भर है। लेकिन इससे पहले, मैं ऊपर वर्णित कोड को थोड़ा समझाना चाहूंगा। जैसा कि आप शायद पहले से ही समझ चुके हैं,
AnyFolder आपके फ़ोल्डर का नाम है। वर्ग में वही नाम दिखाई देता है जो हम भविष्य में बनाते और बनाते हैं। स्थिति
एक्शन यूएक्शन फ़ंक्शन और इसके मापदंडों
यूएनेशन ,
XenForo_ViewPublic_Help_ ouaction ,
help_ youaction के साथ समान है । इस प्रकार, हमने निर्धारित किया कि हमारा पृष्ठ
http://example.com/path_you_forum/help/ youaction (यदि सीएनसी सक्षम है) और
http://example.com/path_you_forum/?help/ youaction पर खुल जाएगा । मुझे लगता है कि यह समझाने लायक नहीं है कि किसी फ़ोल्डर में फ़ाइलों को किसी अन्य नाम के साथ रखने के लिए और अपने सहायता पृष्ठ के URL को बदलने के लिए क्या कार्रवाई करने की आवश्यकता है।
ठीक है, ठीक है, चलो प्रोग्रामिंग खत्म करते हैं और लेआउट के लिए नीचे आते हैं। ऐसा करने के लिए, हमें बस कुछ टेम्प्लेट संपादित करने और भाषा पैक में वाक्यांश जोड़ने होंगे।
Help_wrapper टेम्पलेट में
, अन्य बिंदुओं के साथ समानता से, हम अपना नया जोड़ते हैं
<li><a href="{xen:link help/youaction}" class="{xen:if "{$selected} == 'youaction'", 'secondaryContent', 'primaryContent'}">{xen:phrase youaction}</a></li>
हम help_index के साथ बिल्कुल ऐसा ही
करेंगे <dl> <dt><a href="{xen:link help/gude}">{xen:phrase youaction}</a></dt> <dd>{xen:phrase view_text_youaction}</dd> </dl>
अंत में, अपने आइटम को
नेविगेशन_ tabs_help हुक के साथ ब्लॉक में जोड़कर
नेविगेशन टेम्पलेट संपादित करें।
<li><a href="{xen:link help/youaction}">{xen:phrase youaction}</a></li>
भाषा पैक में हमें केवल 3 वाक्यांश बनाने होंगे:
- view_text_youaction - मद विवरण का वर्णन करें
- youaction - हमारी हेल्प डेस्क का शीर्षक
- gude_rules_text - हमारे पृष्ठ का html कोड
हम एक नए
help_youaction टेम्पलेट
के निर्माण के
साथ समाप्त होते हैं (यह वह नाम है जिसे हमने
कार्रवाई में लिखा है। कार्य फ़ंक्शन)
<xen:title>{xen:phrase gude}</xen:title> <div class="baseHtml"> {xen:phrase gude_rules_text} </div>
PS डिबग मोड बंद करना मत भूलना ;-)