Magento टेम्पलेट को संशोधित करने का सही तरीका / तरीका क्या है?


15

कृपया मुझे सही दृष्टिकोण का सुझाव दें, मैं "EMAIL टू फ्रेंड" पेज को पॉप अप विंडो में अनुकूलित करना चाहता हूं, जब उपयोगकर्ता बटन पर क्लिक करता है (इस उत्पाद को ईमेल करें)। टेम्पलेट संकेत को सक्षम करने से, मुझे पता चला कि बटन के साथ प्रदान किया गया है

दृश्यपटल / RWD / डिफ़ॉल्ट / टेम्पलेट / सूची / उत्पाद / देखें / sharing.phtml

और संबंधित लेआउट फ़ाइल है catalog.xml(सामने / rwd / डिफ़ॉल्ट / लेआउट में)

इसलिए मैंने एक local.xmlही फ़ोल्डर बनाया जहाँ catalog.xmlनिम्न कोड के साथ मौजूद है (बस test.phtmlइसके बजाय मैंने दिया है sharing.phtml, बस 'डीबग' के लिए)

<?xml version="1.0"?>
<layout version="0.1.0">
    <default>

        <catalog-product-view>
            <reference name="content">
                <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
                    <block type="catalog/product_view" name="product.info.sharing" as="sharing" template="catalog/product/view/test.phtml"/>
                </block>
            </reference>
        </catalog-product-view>

    </default>
</layout>

लेकिन कुछ भी नहीं होता है, मेरा मतलब है कि मैं मौजूदा xmlऔर phtmlफ़ाइलों को संशोधित किए बिना थीम के डिफ़ॉल्ट डिज़ाइन को कैसे बदल सकता हूं (ओवरराइट कर सकता हूं) ?

जवाबों:


10

यह वह है जिसे आपको अपनी local.xmlफ़ाइल के अंदर रखना चाहिए ।

<?xml version="1.0"?>
<layout version="0.1.0">
    <catalog_product_view>
        <reference name="product.info.sharing">
            <action method="setTemplate">
                <template>catalog/product/view/test.phtml</template>
            </action>
        </reference>
    </catalog_product_view>
</layout>

गलतियाँ जो आपने की हैं

  • आपने दो लेआउट अपडेट हैंडल का उपयोग किया है : defaultऔर catalog-product-view। यह गलत है। आपको केवल एक लेआउट अपडेट हैंडल की आवश्यकता है। यहां आपको जो सही उपयोग करना चाहिए, वह हैcatalog_product_view

  • तो catalog-product-viewMagento के लिए अज्ञात है। उचित नाम हैcatalog_product_view

  • चूंकि साझाकरण ब्लॉक पहले से ही परिभाषित है catalog.xml, अब आपको उस ब्लॉक को संदर्भित करना होगा और फिर कार्रवाई जोड़कर टेम्पलेट को बदलना होगा setTemplate। यही उपरोक्त लिपि करती है।

आशा है आपको आइडिया मिल जाएगा


मैंने आपके स्थानीय। Xml का उपयोग किया है, फिर भी इसका प्रदर्शन मौजूदा फ़ोल्डर में दिखा रहा है (मैंने एक test.phtml बनाया है) निर्दिष्ट फ़ोल्डर में
दिमाग खैब

क्या आपने अपना कैश साफ़ किया? यह काम करने वाला है, यदि आपने सब कुछ सही ढंग से किया है।
राजीव के टॉमी

हाँ कैशिंग मेरे मामले में अक्षम है और मैंने भी इसकी
पुष्टि की है

इसे <reference name="content"><block type="core/template" name="test.block" template="catalog/product/view/test.phtml" /></reference>सीधे नोड के तहत जोड़ें <catalog_product_view>। और देखें कि क्या test.phtml फ़ाइल सामग्री किसी उत्पाद दृश्य पृष्ठ के निचले भाग में उपलब्ध है
राजीव के टॉमी

नो लक
ब्रू

10

मैं एक सामान्य उत्तर देने की कोशिश करूँगा।

टेम्प्लेट कैसे बदलें

अपने विषय में, आप phtmlडिफ़ॉल्ट थीम या मूल विषय से किसी भी फ़ाइल को ओवरराइड कर सकते हैं । मूल फ़ाइल की प्रतिलिपि बनाएँ app/design/frontend/[package]/[theme]/template/[path/to/phtml]और अपने परिवर्तन करें।

यदि आपके पास अभी तक एक परियोजना विशिष्ट कस्टम विषय नहीं है, उदाहरण के लिए क्योंकि आपने अभी एक विषय खरीदा है, तो एक पर बनाना सुनिश्चित करें

app/design/frontend/[original-package]/[project-name]

यह इनहेरिट करेगा [original-package]/[default], आपको डिफ़ॉल्ट रूप से सब कुछ कॉपी करने की आवश्यकता नहीं है, बस उन फ़ाइलों को जहां आपको बदलाव करने की आवश्यकता है।

मॉड्यूल विशिष्ट परिवर्तन

phtmlफ़ाइल को ओवरराइड करने का एक विकल्प , टेम्पलेट पथ को बदलना है। यह आमतौर पर इस तरह XML लेआउट में किया जा सकता है:

<reference name="the-block-name">
    <action method="setTemplate"><name>path/to/new/template.phtml</name></action>
</reference>

लेकिन इसका उपयोग उन मॉड्यूलों द्वारा किया जाना है, जिन्हें विषय विशिष्ट परिवर्तनों के लिए नहीं, बल्कि किसी टेम्पलेट को बदलने की आवश्यकता है। नया टेम्प्लेट base/defaultतब होना चाहिए ।

स्थानीय का उपयोग कैसे करें। xml / theme.xml

local.xmlफ़ाइल वास्तविक विषय का उपयोग कर रहे, यानी की सूची में होना चाहिए

app/design/frontend/[package]/[theme]/layout

local.xmlफ़ॉलबैक पदानुक्रम में एकाधिक फ़ाइलों पर ध्यान नहीं दिया जाता है। इनमें से पहला जो पाया जा सकता है, उपयोग किया जाता है:

app/design/frontend/[package]/[theme]/layout/local.xml
app/design/frontend/[package]/default/layout/local.xml
app/design/frontend/base/default/layout/local.xml

(डिफ़ॉल्ट पदानुक्रम और कोई कस्टम परिभाषित पदानुक्रम मानकर)

कैसे करें बदलाव

आपके पास केवल स्थानीय। Xml में संशोधन होना चाहिए, न कि उन परिभाषाओं को दोहराना जो पहले से ही मूल XML फाइलों में हैं। इसका मतलब यह भी है, सीधे फ़ाइलों में परिवर्तन करने के लिए डिफ़ॉल्ट विषय से XML फ़ाइलों की प्रतिलिपि बनाने से बचें। अपने विषय की layoutनिर्देशिका को साफ रखें !

मौजूदा ब्लॉक को पूरी तरह से हटाने के लिए, और एक अभिभावक से दूसरे में एक ब्लॉक को स्थानांतरित करने के लिए या मौजूदा ब्लॉक पर किसी भी अन्य तरीकों को कॉल करने के विशिष्ट तत्व local.xmlहैं ।<remove><action method="unsetChild"><action method="append">

Magento 1.9

Magento 1.9 के साथ शुरू, सबसे अच्छा अभ्यास वास्तव में layout/local.xmlइन परिवर्तनों के लिए उपयोग नहीं करना है , लेकिनetc/theme.xml

संक्षेप में, आप ऐप / डिज़ाइन / फ्रंटएंड / अपने पैकेज / आदि / थीम.एक्सएमएल में एक लेआउट अपडेट जोड़ सकते हैं। लाभ यह है कि आपके लेआउट अपडेट के लोड ऑर्डर पर आपका नियंत्रण है। Magento 1.9 से पहले local.xml को हमेशा अंतिम लोड किया गया था, और लेआउट निर्देशों को इसके बाद निष्पादित किया जाना असंभव था।

मैं प्रोजेक्ट-विशिष्ट थीम संशोधनों के लिए local.xml का उपयोग नहीं कर रहा हूं। मुझे लगता है कि local.xml का उपयोग केवल पिछड़ी संगतता कारणों (1.9 और उससे ऊपर) में किया जाता है क्योंकि इसका कोई और उपयोग करने का कोई मतलब नहीं है। Magento 2 ( https://github.com/magento/magento2/issues/1037 ) में Local.xml भी समाप्त कर दिया गया है ।

स्रोत: https://erfanimani.com/dont-use-local-xml/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.