खोज…


टिप्पणियों

थीम्स के साथ कोर कार्यक्षमता को अनुकूलित करना

थीम में लेआउट फाइलें होती हैं, जो अन्य चीजों के अलावा, पृष्ठ पर दिखाई देने वाले ब्लॉक को बदलने के लिए उपयोग की जा सकती हैं। ब्लॉक टेम्पलेट को भी बदला जा सकता है और विभिन्न तरीकों को बुलाया जा सकता है।

स्टोर-स्तरीय डिजाइन

Magento के पदानुक्रमित संरचित विषयों का मतलब है कि एक बेस थीम को स्टोर स्तर पर बढ़ाया और सौंपा जा सकता है।

कस्टम थीम्स रजिस्टर करना

थीम को तीन तरीकों से कॉन्फ़िगर किया जा सकता है:

  1. सिस्टम> कॉन्फ़िगरेशन> डिज़ाइन के तहत प्रति दुकान।
  2. समय सीमा के साथ डिजाइन में बदलाव> सिस्टम> डिजाइन।
  3. थीम अपवादों को एक श्रेणी और उत्पाद स्तर पर भी सेट किया जा सकता है।

पैकेज बनाम थीम

एक पैकेज में कई थीम हैं। एक पैकेज में प्रत्येक विषय एक पैकेज के भीतर डिफ़ॉल्ट विषय से विरासत में मिला है।

डिज़ाइन फ़ॉलबैक

टेम्प्लेट फ़ाइलों का पता लगाने के लिए थीम फ़ॉलबैक प्रक्रिया है:

  1. {पैकेज} / {विषय}
  2. {पैकेज} / डिफ़ॉल्ट
  3. आधार / डिफ़ॉल्ट

आगे आने वाली निर्देशिकाओं को थीम फ़ॉलबैक तंत्र में जोड़ने के लिए Mage_Core_Model_Design_Package :: getFilename विधि को फिर से लिखने की आवश्यकता है

व्यवस्थापक क्षेत्र के लिए फ़ॉलबैक डिफ़ॉल्ट / डिफ़ॉल्ट है।

टेम्पलेट और लेआउट पथ

ब्लाकों

ब्लॉक आउटपुट के लिए उपयोग किए जाते हैं। रूट ब्लॉक सभी ब्लॉकों का मूल है और प्रकार Mage_Page_Block_Html है।

Mage_Core_Block_Template ब्लॉक सामग्री को रेंडर करने के लिए टेम्प्लेट फ़ाइलों का उपयोग करते हैं। टेम्प्लेट फ़ाइल का नाम सेटटेमप्लेट () या ऐडडेटा ('टेम्प्लेट') के सापेक्ष पथों के भीतर सेट किया गया है।

टेम्पलेट Mage_Core_Block_Template में शामिल PHP के टुकड़े हैं। इसलिए इस टेम्पलेट में $ ब्लॉक को संदर्भित करता है।

Mage_Core_Block_Template समय से पहले आउटपुट को रोकने के लिए टेम्पलेट को शामिल करने से पहले एक बफर का उपयोग करता है।

Mage_Core_Model_Layout :: createBlock विधि ब्लॉकों के उदाहरण बनाता है।

Mage_Core_Model_Layout_Update वर्ग मानता है कि लेआउट हैंडल को देखकर प्रत्येक पृष्ठ के लिए कौन से ब्लॉक बनाने की आवश्यकता है।

सभी आउटपुट ब्लॉक प्रदान किए जाते हैं, उदाहरण के लिए toHtml (), जो बदले में अपने बच्चों को प्रस्तुत करना चुन सकते हैं।

पाठ और Text_List ब्लॉक अपनी सामग्री को स्वचालित रूप से प्रस्तुत करते हैं।

एचटीएमएल रेंडर करने से पहले और बाद में ब्लॉक रेंडरिंग करने के लिए इस्तेमाल होने वाली दो घटनाओं को ब्लॉक किया जा सकता है:

core_block_abstract_to_html_before core_block_abstract_to_html_after एक बच्चा ब्लॉक केवल स्वचालित रूप से प्रदान किया जाएगा यदि यह वर्ग Mage_Core_Block_Textlist का है अन्यथा getChildHotml विधि को कॉल करने की आवश्यकता है।

ब्लॉक इंस्टेंसेस को लेआउट के माध्यम से एक्सेस किया जा सकता है, जैसे Mage :: app () -> getLayout () और $ कंट्रोलर-> getLayout ()। ब्लॉक आउटपुट को _toHtml () फ़ंक्शन द्वारा नियंत्रित किया जाता है।

टेम्प्लेट्स को टेम्प्लेट ब्लॉक के अंदर रेंडर व्यू () / fetchView () विधियों द्वारा प्रस्तुत किया जाता है। आउटपुट बफ़रिंग को $ लेआउट-> setDirectOutput के साथ अक्षम किया जा सकता है।

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

लेआउट XML

<reference>
  -edit a block
<block>
  - define a block 
<action>
  - call method on a block
<update>
  - include nodes from another handle.

लेआउट फाइलें config.xml में पंजीकृत की जा सकती हैं:

<config>
    <{area}>
        <layout>
            <updates>
                <{name}>
                    <file>{filepath}</file>
                </{name}>
            </updates>
        </layout>
    </{area}>
</config>

पेज आउटपुट को निम्नलिखित तरीकों से अनुकूलित किया जा सकता है:

  • खाका बदल जाता है
  • लेआउट बदलता है
  • ओवरराइडिंग ब्लॉक
  • ब्लॉक पर प्रेक्षक चर को निम्नलिखित तरीकों से सेट किया जा सकता है:
  • लेआउट -Through क्रियाएँ या विशेषताएँ
  • नियंत्रक - $ इस- getLayout () -> getBlock ()
  • बाल ब्लॉक - $ यह-> getChild ()
  • अन्य -Mage :: app () -> getLayout ()

हेड ब्लॉक एसेट्स

JavaScript और CSS संपत्तियाँ Mage_Page_Block_Html_head ब्लॉक में नियंत्रित की जाती हैं। यह ब्लॉक HTTP अनुरोधों को कम करने के लिए एक फाइल में परिसंपत्तियों के विलय को संभालता है। मर्ज की गई फ़ाइल स्रोत फ़ाइलों के संपादन समय पर आधारित है।

CSS को मर्ज करते समय, Mage_Core_Model_Design_Package पर एक कॉलबैक फ़ंक्शन सही URL के साथ किसी भी @import या url () निर्देशों को अपडेट करने के लिए कहा जाता है

ब्लॉक आउटपुट को अक्षम करने के लिए विभिन्न तंत्र

  • यदि प्रतिक्रिया पहले ही बनाई जा चुकी है और नियमित रेंडरिंग प्रक्रिया (जैसे, एक ऑब्जर्वर में) के बाहर प्रतिक्रिया ऑब्जेक्ट पर सेट की गई है, तो 'नो-रेंडरलायआउट' फ्लैग का उपयोग एक्शन कंट्रोलर पर सेट किया जा सकता है
Mage::app()->getFrontController()->getAction()->setFlag('','no-renderLayout');
  • यह renderLayout() आउटपुट ब्लॉक को संसाधित करने से रोकता है।
  • फ्रंट कंट्रोलर पर setNoRender (ट्रू) को कॉल करके इसे प्राप्त किया जा सकता है: Mage::app()->getFrontController()->setNoRender(true);
  • एक समान प्रभाव को प्राप्त करने के लिए प्रतिक्रिया ऑब्जेक्ट पर isDispatched() ध्वज सेट करना अधिक कुशल हो सकता है।

विभिन्न प्रकार के ब्लॉक

  • Mage_Core_Block_Template
  • Mage_Core_Block_Text_List
  • Mage_Core_Block_Messages
  • Mage_Core_Block_Text_Tag
  • Mage_Core_Block_Text
  • Mage_Page_Block_Template_Links सभी ब्लॉक या तो संरचनात्मक ब्लॉक हैं या सभी ब्लॉक या तो संरचनात्मक ब्लॉक या सामग्री ब्लॉक हैं। उदाहरण:
  • कोर / text_list

एक संरचनात्मक ब्लॉक का उदाहरण।

यह टेम्पलेट्स का उपयोग नहीं करता है; यह बस एक के बाद एक अपने सभी बच्चे ब्लॉक की सामग्री को आउटपुट करने के लिए उपयोग किया जाता है।

  • कोर / टेम्पलेट

एक कंटेंट ब्लॉक का उदाहरण।

इस प्रकार के ब्लॉक का आउटपुट असाइन किए गए टेम्पलेट पर निर्भर करता है। यह चाइल्ड ब्लॉक्स आउटपुट है, यह टेम्पलेट के माध्यम से getChildHtml ('block_name') मेथड से है। उदाहरण: core / text_list - स्ट्रक्चरल ब्लॉक का उदाहरण। यह टेम्पलेट्स का उपयोग नहीं करता है; यह बस एक के बाद एक अपने सभी बच्चे ब्लॉकों की सामग्री को आउटपुट करने के लिए उपयोग किया जाता है। कोर / टेम्पलेट - एक सामग्री ब्लॉक का उदाहरण। इस प्रकार के ब्लॉक का आउटपुट असाइन किए गए टेम्पलेट पर निर्भर करता है। यह चाइल्ड ब्लॉक्स आउटपुट है, यह टेम्पलेट के माध्यम से getChildHtml ('block_name') विधि के माध्यम से होता है।

ब्लॉक इंस्टेंसेस को कंट्रोलर से एक्सेस किया जा सकता है

एक्शन कंट्रोलर से:

$this->getLayout()->getBlock('head')->getTemplate();

/**
* Get specified tab grid
*/
public function gridOnlyAction()
{
$this->_initProduct();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/catalog_product_edit_tab_' .
$this->getRequest()->gerParam('gridOnlyBlock')
)
->toHtml()
);
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow