2010-08-19 10 views
10

मुझे यह जानकर बहुत उत्सुकता है कि ड्रूपल मॉड्यूल को कई फाइलों में कैसे एकीकृत किया जा सकता है। लिंक करने के लिए कई हुक समर्थन में घटक शामिल हैं, जैसे हुक_मेनू, हुक_थीम इत्यादिमॉड्यूल के कोड को अलग फ़ाइलों में विभाजित करने के लिए कैसे करें

एक बार जब मैंने अपने जटिल मॉड्यूल में से एक को सरल बनाने की योजना बनाई, जो इसके फीचर सेट के आधे हिस्से के साथ 2.3K तक पहुंच गई है। समावेशन के दायरे के बारे में ज्ञान की कमी के कारण मुझे उन सभी चरणों को वापस करना होगा।

कुछ विस्तृत जानकारी होने पर मुझे इस संबंध में सहायता करें।

उत्तर

10

Nikitsaid सही है।
मैं जोड़ूंगा कुछ हुक हैं जिन्हें परिभाषित करने की अनुमति है कि कौन सी फाइलों को लोड करने की आवश्यकता है। ऐसे हुक के उदाहरण hook_theme(), और hook_menu() हैं।

एक मॉड्यूल को किसी फ़ाइल को बिना शर्त रूप से लोड करना चाहिए जिसे उसे किसी फ़ंक्शन के बाहर से module_load_include() पर कॉल करने की आवश्यकता है।

function book_menu() { 
    $items['admin/content/book'] = array(
    'title' => 'Books', 
    'description' => "Manage your site's book outlines.", 
    'page callback' => 'book_admin_overview', 
    'access arguments' => array('administer book outlines'), 
    'file' => 'book.admin.inc', 
); 
    $items['admin/content/book/list'] = array(
    'title' => 'List', 
    'type' => MENU_DEFAULT_LOCAL_TASK, 
); 
    $items['admin/content/book/settings'] = array(
    'title' => 'Settings', 
    'page callback' => 'drupal_get_form', 
    'page arguments' => array('book_admin_settings'), 
    'access arguments' => array('administer site configuration'), 
    'type' => MENU_LOCAL_TASK, 
    'weight' => 8, 
    'file' => 'book.admin.inc', 
); 
    // … 
} 

function user_theme() { 
    return array(
    'user_picture' => array(
     'arguments' => array('account' => NULL), 
     'template' => 'user-picture', 
    ), 
    'user_profile' => array(
     'arguments' => array('account' => NULL), 
     'template' => 'user-profile', 
     'file' => 'user.pages.inc', 
    ), 
    // … 
    'user_admin_perm' => array(
     'arguments' => array('form' => NULL), 
     'file' => 'user.admin.inc', 
    ), 
    // … 
); 
} 
+0

लेकिन मेरा मुख्य इरादा कई डेटा एक्सेस फ़ंक्शंस के बारे में है जो विभिन्न भागों में उपयोग किए जाते हैं। जैसे टिप्पणियाँ। 'comment_total_count()', 'comment_today_count()' टेम्पलेट्स में उपयोग किया जाता है, 'comment_thread() 'व्यवस्थापक पृष्ठ के साथ-साथ सामग्री पृष्ठ पर भी आवश्यक है। व्यवस्थापक पृष्ठ पर 'comment_remove() 'और' comment_edit() 'के दौरान सामग्री पृष्ठ पर' comment_insert()'। क्या मुझे परंपरागत 'आवश्यकता' या 'शामिल' वाक्यविन्यास का उपयोग करने की आवश्यकता है? और एकाधिक फ़ाइलों को शामिल करने के बारे में क्या? –

+1

PHP फ़ाइलों को शामिल करने के लिए उपयोग किया जाने वाला फ़ंक्शन ['module_load_include()'] (http://api.drupal.org/api/function/module_load_include/6) है। आप एक, या अधिक फाइलों को शामिल कर सकते हैं। – kiamlaluno

2

यह आसान है, बस अन्य बड़े मॉड्यूल की समीक्षा करें (जैसे सीके, विचार, आदि)। मुख्य हुक मॉड्यूल में होना चाहिए, अन्य अलग-अलग फाइलों में होना चाहिए - थीमर्स, एडमिन पेज, अन्य पेज, सर्विस फ़ंक्शंस और इतने पर ...

7

अधिक फ़ाइलों का उपयोग करना, समान चीजों को एक साथ समूहित करने का मामला है फ़ाइल को और अधिक प्रबंधित रखने के लिए। विशिष्ट उपयोग की गई फ़ाइलों

  • सब प्रशासन सामान, मेनू कॉलबैक, रूपों आदि
  • .pages.inc दृश्यपटल मेनू कॉलबैक के लिए के लिए .admin.inc है।
  • विषय कार्यों के लिए .theme.inc, preprocess हुक आदि
  • गैर व्यवस्थापक रूपों और उनके संचालकों के लिए .forms.inc

यह एक कोडिंग शैली है जो कुछ और है। तो यह सिर्फ आपके द्वारा लिखे गए कोड को बनाए रखने में मदद करने के लिए है।

+1

यह प्रदर्शन के लिए भी है। .module फ़ाइलों से सभी फ़ंक्शंस प्रत्येक प्रारंभिकरण पर लोड हो जाते हैं। – ram4nd

संबंधित मुद्दे

 संबंधित मुद्दे