एक / आधार / डिफ़ॉल्ट / लेआउट और एक / डिफ़ॉल्ट / डिफ़ॉल्ट लेआउट क्यों है? यह भ्रामक और बेमानी लगता है।
एक / आधार / डिफ़ॉल्ट / लेआउट और एक / डिफ़ॉल्ट / डिफ़ॉल्ट लेआउट क्यों है? यह भ्रामक और बेमानी लगता है।
जवाबों:
संक्षेप default/default
में <1.4CE से विरासत है जहां यह मूल आधार पैकेज था। Magento कोर विषयों डिफ़ॉल्ट पैकेज अभी भी में जहाज - तो यह जरूरी नहीं है पदावनत इतना के रूप में यह विरासत है।
क्योंकि CE के उन्नयन के दौरान डिफ़ॉल्ट / डिफ़ॉल्ट को अधिलेखित किया जा सकता है, यह उचित नहीं है कि आप फ़ाइलों को यहां रखें - लेकिन प्लगइन्स <1.3 के साथ पीछे संगत होने का प्रयास जानबूझकर फ़ाइलों को आधार / डिफ़ॉल्ट के बजाय यहां कर सकते हैं।
स्रोत: http://www.magentocommerce.com/knowledge-base/entry/magentos-theme-hierarchy#3.2
default
एक बहुत उपयोगी डिबगिंग उपकरण था।
मुझे आधिकारिक मैगेंटो विकी पर और भी बेहतर उत्तर मिला । (यह 2012 से है, इसलिए मुझे यकीन नहीं है कि यदि कोई भी जानकारी पुरानी है - लेकिन यह मेरे द्वारा बताए गए 1.8.1 से लागू हो सकती है।) जबकि मैं अत्यधिक अनुशंसा करता हूं कि आप इसे पूरा पढ़ें (बोल्ड पर क्लिक करें लिंक), मुझे इसे नीचे संक्षेप में बताएं।
आखिर क्या है /base
?
/base/default
सीई 1.4 और ईई 1.8 में पेश किया गया था जो सभी ऐप-लॉजिक-टाइप फ्रंट-एंड कार्यक्षमता को एक सिंगल कोडबेस में समेकित करता है जिसे आपको कभी भी संपादित नहीं करना चाहिए। यह एक डिफ़ॉल्ट थीम के साथ एक डिज़ाइन पैकेज के रूप में एक ही निर्देशिका संरचना है , लेकिन यह कुछ महत्वपूर्ण CSS फाइलों को याद कर रहा है, इसलिए वे आपको इसे केवल अपने डिजाइन पैकेज और थीम के रूप में रखने की अनुशंसा नहीं करते हैं।
एक महान सादृश्य कहना है कि हो सकता है /base
करने के लिए है /design/frontend
कि क्या /core
करना है /code
। आप फ़ाइलों को अंदर संशोधित करने वाले नहीं हैं /base
। इसके बजाय आप अपने स्वयं के कस्टम डिज़ाइन पैकेज में इसकी कार्यक्षमता का विस्तार करने वाले हैं , जो मैगेंटो पहले वापस अंदर जाने से पहले देखेगा /base/default
- पहले यह अंदर दिखेगा /design/frontend/{custompackagename}/{customthemename}
, फिर यह वापस गिर जाएगा /design/frontend/{custompackagename}/default/
, और अंत में यह वापस गिर जाएगा /design/frontend/base/default
।
वास्तव में, यह केवल इस तरह से सोचा जाना चाहिए /base
- /default
उपनिर्देशिका केवल इसलिए है क्योंकि मैगेंटो फ़ॉलबैक सिस्टम अपनी थीम में प्रत्येक डिज़ाइन पैकेज के माध्यम से अपनी यात्रा पूरी करता है । स्पष्ट होने के लिए, एक डिज़ाइन पैकेज एक उपनिर्देशिका है , और थीम एक डिज़ाइन पैकेज के भीतर एक उपनिर्देशिका है। जब Magento एक डिज़ाइन पैकेज के माध्यम से देखता है, चाहे वह हो या , विषय हमेशा अंतिम स्थान पर होगा Magento दिखेगा।/default
/design/frontend
/base
/{custompackagename}
/default
इसलिए, चूंकि प्राथमिक उद्देश्य /base
फ़ॉलबैक सिस्टम में अंतिम बिंदु के रूप में सेवा करना है , इसलिए उस उद्देश्य के अनुसार इसके अलावा कोई अन्य विषय नहीं होगा /base/default
।
/default
फिर क्यों है ?
तो फिर क्यों अभी भी एक है /design/frontend/default/default
? और वहाँ क्यों नहीं है /design/adminhtml/base/default
? सच कहूं तो मुझे दूसरे सवाल का जवाब नहीं पता। लेकिन मुझे पहले जवाब देने की कोशिश करने दो।
विरासत की अनुकूलता आदि को भूलकर, मुझे लगता है कि यह समझने में बहुत आसान हो सकता है कि क्या इसके /generic/default
बजाय इसे बुलाया गया था /default/default
। इसलिए इस चर्चा के प्रयोजनों के लिए मैं "सामान्य डिजाइन पैकेज" के रूप में /app/design/frontend/default/
और /app/skin/frontend/default/
सामूहिक रूप से संदर्भित करूंगा । मैं उन निर्देशिकाओं के अंदर सब कुछ का उल्लेख करूंगा जैसे कि उन्हें बुलाया गया था /app/design/frontend/generic
और /app/skin/frontend/generic
। चूंकि (कम से कम फ्रंटेंड के मामले में) मैगेंटो की फालबैक प्रणाली अब वापस नहीं आती है /app/design/frontend/default/
, मुझे लगता है कि इसे "डिफ़ॉल्ट" कहना जारी है क्योंकि यह भ्रम है कि इस शब्द का अर्थ है कि कुछ फॉलबैक श्रृंखला का हिस्सा है , लेकिन जेनेरिक डिज़ाइन पैकेज अब नहीं है की शुरुआत के रूप में गिरावट श्रृंखला का हिस्सा है/base
। इसलिए, "डिफ़ॉल्ट डिज़ाइन पैकेज" के बजाय इसे "जेनरिक डिज़ाइन पैकेज" कहना इस भ्रम को दूर करता है, यह बताकर कि हाँ, यह सिर्फ जेनेरिक थीम का सेट है, जो मैगेंटो के साथ मुफ्त में आता है, बिना यह कमबैक श्रृंखला का हिस्सा है। : डी
तो पर भार उठाते: सामान्य डिजाइन पैकेज के अंदर एक डिफ़ॉल्ट थीम और कई गैर डिफ़ॉल्ट थीम हैं: /blank
, /iphone
, और /modern
। यदि कोई नॉन-डिफॉल्ट थीम सक्रिय है, तो उसकी फाइलें डिफॉल्ट थीम में कुछ भी ओवरराइड कर सकती हैं, लेकिन कोई भी ऐसा विषय नहीं है जो गैर-डिफॉल्ट थीम सक्रिय हो, जेनेरिक पैकेज के डिफॉल्ट थीम का कोई भी हिस्सा जो कि नॉन-डिफॉल्ट थीम द्वारा ओवरराइड नहीं किया गया है अभी भी चलाए जाते हैं, और आगे वे कुछ भी ओवरराइड करेंगे /base/default
। अंत में किसी भी गैर-ओवरराइड भाग को /base/default
चलाएं।
हालांकि, गंभीर रूप से, यदि आप एक कस्टम डिज़ाइन पैकेज का उपयोग कर रहे हैं, तो जेनेरिक डिज़ाइन पैकेज का कोई भी हिस्सा कभी नहीं चलेगा । वापस आने प्रणाली सीधे से चला जाता है {customdesignpackage}/{customthemename}
के लिए {customdesignpackage}/default
करने के लिए base/default
। (जब तक मैं इसे सही तरीके से नहीं समझ पा रहा हूं; कृपया मुझे गलत समझें तो सही करें।)
कहा जा रहा है कि, जेनेरिक डिज़ाइन पैकेज को पूरी तरह से कस्टम डिज़ाइन पैकेज के बिना पूरी तरह से हटा दिया जाना सामान्य होगा क्योंकि जेनेरिक डिज़ाइन पैकेज में कुछ त्वचा तत्व हैं जो अभी भी आवश्यक हैं।