2011-05-13 16 views
5

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

मेरा ढांचा एक कस्टम निर्मित ढांचा है लेकिन कोडिनेटर के समान ही है, बस थोड़ा हल्का।

विचार मेरे पास है टेम्पलेट फ़ाइलों के भीतर है मॉड्यूल पदों पर कहते हैं, और मॉड्यूल ऑटो लोड और

<html> 
    <head> 
     <title>Welcome to my site</title> 
    </head> 
    <body> 

      <header> 
       .... 
       <?php $this->call_modules('header') ?>; 
      </header> 

      <section> 

       <aside> 
        <?php $this->call_modules('sidebar') ?>; 
       </aside> 

      </section> 

    </body> 
</html> 

तो पार्स कि निम्नलिखित मॉड्यूल बुलाया जायेगा और सामग्री में वहाँ जाना होगा है जगह:

/system/applications/admin/modules/header/a.php 
/system/applications/admin/modules/header/b.php 
/system/applications/admin/modules/sidebar/a.php 
/system/applications/admin/modules/sidebar/b.php 

तो है कि मेरे पास है जैसे कि यह ठीक काम करेगा लगता है, लेकिन समस्या यह है कि मैं एक मॉड्यूल प्रणाली पहले बनाया गया कभी नहीं किया है है, और मुझे लगता है के रूप में इन हुक के रूप में अधिक वर्गीकृत कर रहे हैं।

मेरे सिर में मैं मूल रूप से एक सरल प्रणाली है कि 1 वर्ग फ़ाइल के होते हैं, और टेम्पलेट्स यदि आवश्यक हो, calss फ़ाइल शायद इस प्रकार दिखाई देगा:

class Module_HelloWorld extends Module 
{ 
    public static function info() 
    { 
     return array(
      'name' => 'Hello Word', 
      'version' => '1.0.0', 
      'description' => 'Dispalys "hello World"', 
      'author' => 'Robert Pitt', 
     ); 
    } 

    public function execute($context,$action) 
    { 
      //$context would be the current view at the point of execution for the view 

      //$action would be header/sidebar 
    } 
} 

तो संक्षेप में मेरे सवाल, क्या होगा मेरे ढांचे के लिए मॉड्यूल सिस्टम को डिज़ाइन करने का सबसे अच्छा तरीका बनें, 3Rd पार्टी मॉड्यूल को किसी निर्देशिका में छोड़ दिया जाए और फिर व्यवस्थापक से इंस्टॉल किया जाए, बिना उपयोगकर्ता हस्तक्षेप के?

उत्तर

3

आपके एमवीसी और सीएमएस के साथ शुभकामनाएँ। मैंने कुछ समय पहले एक ही विचार को लागू किया है, मेरा दृष्टिकोण सरल था, पहला मेरे दिमाग में आया था।

  1. पृष्ठों और मॉड्यूल (विजेट) पर अपने सिस्टम को आधार दें।
  2. पृष्ठों की जानकारी डेटाबेस तालिका में सहेजी गई है "पेज" कहें।
  3. एक मॉड्यूल (विजेट) एक वर्ग है जिसमें मेटा-डेटा (परिभाषा) और व्यावसायिक तर्क शामिल है।
  4. यदि आप किसी पृष्ठ पर कोई मॉड्यूल जोड़ते हैं, तो इसकी विशिष्ट जानकारी डेटाबेस में सहेजी जाती है।
  5. अगली बार यदि आप इसका उदाहरण चाहते हैं, तो बस संबंधित पैरामीटर को अपनी कक्षा में पास करें और आपके पास यह है।
  6. इस तरह आप विभिन्न स्थानों पर और विभिन्न उदाहरणों के लिए मॉड्यूल की एकल परिभाषा का उपयोग कर सकते हैं।
  7. आप डेटाबेस में कई पेज जोड़ सकते हैं।
  8. उपयोगकर्ता एक ही पेज में कई विजेट जोड़ सकते हैं।
+0

आपके उत्तर के लिए धन्यवाद, मैं देखता हूं कि मैं बाद में क्या कर सकता हूं, हालांकि डाटाबेस स्टोरेज वह रास्ता नहीं है जिसे मैं नीचे जाना चाहता हूं। – RobertPitt

+0

@RobertPitt, यह आपके परिदृश्य के लिए एक वर्ग और मॉड्यूल के बीच एक-से-एक पत्राचार करने के लिए काम कर सकता है लेकिन डेटाबेस चीज मेरे लिए काम करती है। –

1

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

सेटिंग्स में से एक यह निर्धारित करता है कि कौन सा पृष्ठ (एस) मॉड्यूल को लोड करने की आवश्यकता है। यदि प्रत्येक पृष्ठ पर मॉड्यूल आवश्यक है तो यह एक (*) है। मेरा ढांचा आधार नियंत्रक मॉड्यूल सूची की जांच करता है और फिर मॉड्यूल के लिए पृष्ठ सेटिंग को जांचता है कि यह लोड किया जाना चाहिए या नहीं।

मेरा ढांचा आउटपुट बफर में टेम्पलेट लोड करके और सार्वजनिक var पर संग्रहीत करके पृष्ठ को प्रदर्शित करता है जिसे तब पूरे ढांचे में किसी भी कोड द्वारा एक्सेस किया जा सकता है। तो फिर मैं केवल उन वर्गों की पहचान करने के लिए str_replace का उपयोग कर सकता हूं जिन्हें लोड करने की आवश्यकता है (उदाहरण के लिए, टेम्पलेट में एक इंटरफ़ेस टैग जो पृष्ठ की मुख्य सामग्री को निर्दिष्ट करता है) और फिर मॉड्यूल सामग्री के साथ प्रतिस्थापित करें। इसलिए, एक गैलरी मॉड्यूल गैलरी पृष्ठ पर गैलरी के साथ इंटरफ़ेस टैग को प्रतिस्थापित करेगा जबकि एक लेख मॉड्यूल लेख पृष्ठ पर इंटरफ़ेस टैग पर एक लेख प्रस्तुत करेगा।

हालांकि मुझे नहीं लगता कि ज्यादातर लोग प्रतिस्थापन के लिए स्मार्ट टैग का उपयोग करते हैं।

मुझे लगता है कि यह ठीक काम करता है जब आपको किसी ऐसे ढांचे की आवश्यकता होती है जिसे आप व्यक्तिगत रूप से ग्राहकों को साइट वितरित करने के लिए उपयोग कर रहे हैं। यह संभवतः काम नहीं करेगा अगर अलग-अलग लोगों को आपके ढांचे का उपयोग करने में सक्षम होना चाहिए।

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