2011-06-24 15 views
5

तो मैं ऑब्जेक्ट ओरिएंटेड PHP के माध्यम से एक सीएमएस, गैलरी स्क्रिप्ट बना रहा हूं। वैसे भी, समस्या यह है कि मेरे पास ऑब्जेक्ट्स के लिए बुनियादी लेआउट है और इस बिंदु पर जहां मुझे एक साथ डालने की ज़रूरत है, मैं इसे कैसे करना चाहता हूं।कोई सीएमएस की संरचना कैसे करता है?

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

सूचकांक पृष्ठ पर, मैं अंत में अनिवार्य रूप से कर रही है इस (यह परिवर्तन होगा, लेकिन यह कैसे मैं इसे सेट अप करने के लिए शुरू हो गया था के लिए उदाहरण है):

$navigation = new Navigation(); 
$navigation->top(); 

$page = new Module(); 
$page->basicPage($_GET['m']); 

basicPage() में कुछ काम करता है , लेकिन मुख्य रूप से यह मुद्दा है:

$gallery = new Gallery(); 
$gallery->setGallery($id); 
$gallery->thumbGallery(); 

तो आगे।

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

तो मैंने समस्या के कुछ समाधानों के बारे में सोचा। मेरे पास ये मूल पृष्ठ नहीं हैं, लेकिन मेरे पास डिज़ाइनर वर्डप्रेस की तरह टेम्पलेट्स का निर्माण करते हैं। मैं इस समाधान को नापसंद करता हूं, क्योंकि यह पूरी तरह से यद्यपि डिजाइन प्रक्रिया जटिल बनाता है। मैं इसे बनाना नहीं चाहता हूं ताकि सब कुछ नियंत्रित हो, और एक तरीका है। बेशक आप डिज़ाइनर और कुछ अन्य चाल के रूप में तत्वों को "प्रदर्शित: कोई नहीं" कर सकते हैं, लेकिन मैं चाहता हूं कि वर्डप्रेस द्वारा जटिल तरीके के बिना, उन्हें बहुत सी चीजें करने की क्षमता हो।

मेरा सवाल यह है कि मैं सरल और लचीलापन के बीच संतुलन को कैसे रोकूं?

कोई भी मदद, यहां तक ​​कि विचारों की भी सराहना की जाती है। धन्यवाद।

संपादित करें: मैं उल्लेख करना भूल गया। समस्या यह है कि इंडेक्स में यह सब डेटा है, अन्यथा मुझे बहुत कुछ करना होगा/और ऐसा, और मैं वास्तव में इसे एक प्रक्रियात्मक कार्यक्रम नहीं बनाना चाहता था, केवल एक जिसे आप अनिवार्य रूप से केवल प्लॉप कर सकते हैं सामान नीचे और हम अच्छे हैं। देखें, मॉड्यूल गैलरी और पेज दोनों के लिए खड़ा है। अधिकांश पृष्ठों में इसके साथ संलग्न छवियां नहीं होंगी, और श्रेणियों में छवियां होंगी, लेकिन हमेशा टेक्स्ट नहीं। अगर मैं thumbGallery को कॉल करता हूं तो यह एक त्रुटि उत्पन्न करेगा और यह सिर्फ एक सूचनात्मक पृष्ठ है, और यदि मैं एक सूचनात्मक पृष्ठ कहता हूं और यह एक श्रेणी है, तो यह छवियों (त्रुटि से बचने के लिए) नहीं दिखाएगा। मैं मूल पृष्ठ कहलाता हूं, और इसे एक साथ बनाना शुरू कर सकता हूं, लेकिन जैसा कि मैंने पहले उल्लेख किया था, यह यह है कि यह डिजाइन करता है कि डिजाइनर को PHP के साथ गड़बड़ करने के बिना कितनी आजादी है, और अधिकांश डिजाइनर बहुत सुन्दर हैं जब यह आता है दुर्भाग्य से PHP करने के लिए। आकस्मिक रूप से ओओपी (कोई अपराध नहीं। मैं भी एक डिजाइनर हूं, लेकिन मैं भी कार्यक्रम करता हूं)।

+0

[फ्रंट कंट्रोलर] (http://martinfowler.com/eaaCatalog/frontController.html) डिज़ाइन पैटर्न पर नज़र डालें। – Smurf64

उत्तर

1

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

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

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

यह सुनिश्चित नहीं है कि यह आपके पास समस्या का समाधान है, लेकिन यह एक बहुत ही सरल उदाहरण है कि मैंने इसे अपने सीएमएस में अतीत में कैसे किया है।

+0

वैसे हाँ, मैं कुछ ऐसा पहले से ही करता हूं (पेज, श्रेणी)। लेकिन एक श्रेणी सूची दृश्य की तरह कुछ के लिए, यह कुछ है जो मुझे डेटाबेस में स्टोर करने की आवश्यकता नहीं है, बल्कि PHP में किया जा सकता है। ऐसा इसलिए है क्योंकि श्रेणियों के लिए डेटा मॉड्यूल तालिका में पहले ही संग्रहीत है, और केवल कॉल करने और सही तरीके से प्रदर्शित करने की आवश्यकता है (PHP के माध्यम से स्वरूपित)। मेरे पास विशेष रूप से समस्या यह है कि डिजाइनर कितना बदल सकता है। उदाहरण के लिए, एक डिजाइनर पेज होना करने के लिए स्थापित करना चाह सकते हैं: आवरण {हैडर, नव, सामग्री, पाद} या हो सकता है: आवरण {वाम [हैडर, नव], राइट [सामग्री], पाद} –

+0

लेकिन आपका सुझाव अभी भी एक बहुत अच्छा है, और मैं इस विचार के लिए धन्यवाद। शायद मैंने जो स्पष्टीकरण दिया है, आप बेहतर समझ सकते हैं। मुद्दा यह है कि मैं वह व्यक्ति चाहता हूं जो टेम्पलेट्स को आसानी से बनाने में सक्षम हो। शायद, शायद ... मुझे लगता है कि उनके पास मूल टेम्पलेट का उपयोग करने का विकल्प होना चाहिए, लेकिन यदि वे चाहें तो वे गहरे जा सकते हैं? क्या आपको लगता है कि यह स्वीकार्य है या? –

+0

यह निश्चित रूप से एक बड़ा डिजाइन निर्णय है। एक दृश्य को अनुकूलित करने की क्षमता प्रदान करना स्पष्ट है। लेकिन, क्या दृश्य को देखने के प्रत्येक उदाहरण के लिए अनुकूलित किया जा सकता है? तो पृष्ठ ए के पृष्ठ बी के श्रेणी दृश्य बनाम श्रेणी सूची के लिए कस्टम दृश्य हो सकता है? कस्टम दृश्य को कैसे परिभाषित किया जाएगा? यह कैसे किया जाता है वास्तव में सीएमएस के अन्य हिस्सों में उपयोग किए गए कुछ निर्णयों और दर्शनों पर निर्भर करता है। मेरा सीएमएस ढांचा बहुत जटिल था और डेटाबेस और कस्टम विचारों आदि के माध्यम से काफी अनुकूलन की इजाजत दी गई थी। – Percy

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