होम पेज में कंटेंट ब्लॉक जोड़कर, 'std' <div> को हटा दें


9

मैं कुछ चीजें करना चाहता हूं, और मैजेंटो के साथ प्रवीण से नया और बहुत दूर हूं; जो मैं पूछ रहा हूं वह निम्नलिखित करने के लिए सबसे अच्छा, सबसे संक्षिप्त तरीका है:

  1. मैं अपने होम पेज की सामग्री और शायद हर दूसरे सीएमएस पेज को संपादित करना चाहूंगा, जैसा कि मुझे इस प्रोजेक्ट में और मिलता है- मेरे टेक्स्ट एडिटर में और एडमिन पैनल WYSIWYG में नहीं। मुझे लगता है कि मुझे home-content.phtmlअपने हिंडोला (ओं) के लिए मेरा मार्कअप रखने जैसा एक टेम्पलेट होगा और जो कुछ भी मैं अपने होम पेज पर डालूंगा। यह मुझे ऐसा करने के लिए सबसे तार्किक तरीका लगा, यह मुझे व्यवस्थापक पैनल में विधि home-content.phtmlसे जोड़ रहा है getChildHtml('content')-> सीएमएस -> पृष्ठ -> होम पेज -> 'डिज़ाइन' टैब -> लेआउट अपडेट xml इस तरह कोड के साथ:

    <reference name="content">
                <block type="core/template" name="home-content"
                       as="home-content" template="home-content.phtml" />
    </reference>

    हालांकि, यह कि मैं जो करना चाहता था, उससे मैं खिलवाड़ कर रहा था ...

  2. मेरी राय में, डिफ़ॉल्ट Magento HTML संरचना बहुत अधिक नेस्टेड div( आवरण -> पृष्ठ -> मुख्य-कंटेनर col1- लेआउट -> मुख्य -> ​​col-main सिर्फ एक पृष्ठ की सामग्री के साथ प्राप्त करने के लिए) फूला हुआ है । यह मेरे लिए एक दुःस्वप्न के साथ सास के साथ स्टाइल बनाता है, उन सभी वर्गों की शैलियों को 5 अलग-अलग सास भाग में विभाजित किया गया है। इसलिए, मैं अपने स्वयं के डिजाइन प्रिंसिपलों से मिलान करने के लिए डिफ़ॉल्ट संरचना को साफ कर रहा हूं। इसका एक हिस्सा खाली तत्वों को हटाने का मतलब है, जैसे कि कुख्यात <div class="std"> </div>। इससे छुटकारा पाने का सबसे प्रभावशाली तरीका है (जैसा कि मैं सामग्री के लिए व्यवस्थापक पैनल का उपयोग करने की योजना नहीं करता) <remove name="cms.wrapper">सीएमएस होम लेआउट एक्सएमएल में है। समस्या यह है, यह ऊपर दी गई विधि के साथ मैं जो कुछ भी जोड़ता है उसे हटा देता है reference name="content"

मूल रूप से: मैं अपने होम पेज पर सामग्री कैसे जोड़ सकता हूं .phtml और<div class="std"> </div> बिना किसी संघर्ष के निकाल सकता हूं ? मुझे समझ नहीं आ रहा है कि कैसे व्यवस्थापन की कार्यक्षमता -> CMS -> लेआउट अपडेट XML, Layout.xml की कार्यक्षमता से अलग है, या मुझे एक के ऊपर एक का उपयोग क्यों करना चाहिए (जैसे, क्या मैं <cms index-index>एक ही काम करने के लिए उपयोग नहीं कर सकता ?) ।

अग्रिम धन्यवाद, सब लोग।


मेरे मामले में, .stdसूची शैलियों को जोड़ता है जहां वे नहीं चाहते हैं। मुख्य रूप से Magento के साथ, इसे हल करने के लिए एक लंबी प्रक्रिया है।
rybo111

जवाबों:


12

आइए हम आपकी समस्या को 3 खंडों में विभाजित करते हैं और इसकी समीक्षा करते हैं।

1. आपको अपने CMS पेज पर एक टेम्प्लेट फ़ाइल जोड़ने की आवश्यकता है

आपके द्वारा यहां अपनाई गई विधि निश्चित रूप से काम करेगी। आपको डिज़ाइन कोड के तहत इस कोड स्निपेट को अपने cms पृष्ठ के अंदर जोड़ना होगा

<reference name="content"><block type="core/template" name="home-content"  template="test.phtml" /></reference>

चूंकि आपकी टेम्प्लेट फ़ाइल सीधे contentब्लॉक में आती है , इसलिए आपकी टेम्प्लेट सामग्री को मैगनेटो द्वारा प्रदान किया जाएगा। तो आप asअपने में संपत्ति का उपयोग करने की जरूरत नहीं है core/template block

2. कैसे बचें <div class="std"></div>

यह div वास्तव में cms पृष्ठों के लिए एक आवरण div तत्व है। इस ब्लॉक की परिभाषा यहाँ देखें।

  <block type="page/html_wrapper" name="cms.wrapper" translate="label">
        <label>CMS Content Wrapper</label>
        <action method="setElementClass"><value>std</value></action>
        <block type="cms/page" name="cms_page"/>
  </block>

जैसा कि आप देख सकते हैं, cms.wrapperब्लॉक प्रकार का है page/html_wrapper। यह ब्लॉक क्या करता है, यह अपने बच्चे के सभी ब्लॉक को एक दिव्य तत्व (डिफ़ॉल्ट तत्व) के साथ लपेट देगा और बच्चे के ब्लॉक को स्वचालित रूप से प्रस्तुत करेगा।

इस ब्लॉक से बचने के लिए, आपने इस कोड का उपयोग किया है

<remove name="cms.wrapper">

हालांकि यह पूरी तरह से गलत है। यह वास्तव में आवरण div को हटाता है। लेकिन इसके साथ ही यह इसे चाइल्ड ब्लॉक भी हटा देता है cms_page। यह cms_pageएक प्रकार के साथ है cms/page। इसका मतलब है कि यह ब्लॉक का संदर्भ देता है Mage_Cms_Block_Page। यह ब्लॉक CMS पेजों का "दिल" है। इसलिए CMS पेज के हार्ट ब्लॉक को मिटा देने वाले रैपर को भी हटा दिया। इसीलिए आपको अपने cms पेज में कोई आउटपुट नहीं मिला।

तो इस आवरण से बचने के लिए आपको क्या करना चाहिए? जवाब बहुत आसान है। cms_pageआवरण से बच जाएं और फिर आवरण को सुरक्षित रूप से हटा दें। तो यहाँ वह कोड है जो आपको अपने cms पेज लेआउट सेक्शन पर उपयोग करने की आवश्यकता है।

<reference name="content"><remove name="cms.wrapper" /><block type="core/template" name="home-content"  template="test.phtml" /><block type="cms/page" name="cms_page"/></reference>

जैसा कि आप लेआउट xml कोड में देख सकते हैं, हम पहले रैपर को हटाते हैं और इसलिए cms_pageहमारे कोड के माध्यम से ब्लॉक करते हैं। जैसा कि आप देख सकते हैं हमने अपने टेम्पलेट ब्लॉक का भी उपयोग किया है। यह आपके पेज में पहले टेम्प्लेट फ़ाइल की सामग्री को प्रस्तुत करेगा, उसके बाद सेमी पेज की सामग्री।

3. How admin -> CMS -> लेआउट अपडेट XML, layout.xml की कार्यक्षमता से अलग है

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

लेकिन अगर आपको सभी सीएमएस पेजों में कुछ सामान्य परिवर्तन लागू करने की आवश्यकता है, तो इसके साथ जाना आसान होगा layout.xml

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

उम्मीद है की वो मदद करदे


3

यदि केवल एक अपमानजनक पृष्ठ है, तो सबसे अच्छा और आसान तरीका IMO:

CMS पृष्ठ का "Design"टैब संपादित करें ।

आवरण तत्व का संदर्भ दें, setElementClassकिसी भी वर्ग या नए वर्ग को लागू करने के लिए विधि का उपयोग करें ।

<reference name="cms.wrapper">
<action method="setElementClass"><value>none</value></action>
</reference>

0

आपको लेआउट को संशोधित करना चाहिए, आम तौर पर 1column.phtml, 2columns.phtml, आदि और उन्हें आप जैसे चाहते / आवश्यकता बनाते हैं।

वे PHTMLs किसी भी लेआउट की मूल संरचना हैं और प्रोग्रामिक रूप से XML अपडेट से भरे हुए हैं।

यदि आप अपने विषय में अपने टेम्प्लेट और लेआउट के बीच निरंतरता रखते हैं तो यह कुछ और प्रभावित नहीं करेगा।


जैसे क्या, if this is the home page, include this code ...सभी लेआउट पृष्ठों पर एक सशर्त जोड़ना , फिर सभी पृष्ठों getCHildHtml('content')पर बस हटाना ? मैं सीखना चाहता हूं कि कैसे Magento का उपयोग करें और यह बेहतर उपकरण है, न कि केवल समस्या को हल करना।
एज़ट्रैटिक

नहीं, लेआउट का उपयोग साइट के चारों ओर, विभिन्न परिस्थितियों में और मार्ग के आधार पर अलग-अलग अपडेट के साथ किया जाता है। उस समय एक प्रश्न करें, यदि आपको अधिक संदेह है तो अधिक प्रश्न करें, लेकिन इसे संपादित न करें या यह बंद हो सकता है।
मलबपर्धा

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

आप इस पृष्ठ को "दूसरों के लिए मुफ्त में नौकरी करते हैं" के लिए गलत हैं। उत्तर मान्य है और शायद आप जिसे खोज रहे हैं और एक बार जब आपको पता चलेगा कि मैगेंटो में चीजें कैसे काम करती हैं तो आप पाएंगे कि यह उत्तर इस मामले में आगे बढ़ने का तरीका है।
मुलपर्धा

इसे पढ़ें और आपको इसकी सबसे अधिक आवश्यकता होगी: magentocommerce.com/knowledge-base/entry/…
mbalparda

0

स्वीकार किए गए उत्तर में सभी दिशाओं को समझने में मुझे एक मिनट का समय लगा, इसलिए उस पर गुल्लक वापस करने के लिए, यह वह सब है जो सभी सीएमएस पृष्ठों के लिए आवरण हटाने के लिए आवश्यक था: <div class="std"></div>

Cms.xml में, cms_page ब्लॉक को इसमें बदलें:

<cms_page translate="label">
    <label>CMS Pages (All)</label>
    <reference name="content">
        <block type="core/template" name="page_content_heading" template="cms/content_heading.phtml"/>
        <block type="cms/page" name="cms_page"/>
    </reference>
</cms_page>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.