2012-03-20 15 views
5

मैं एक ही Magento दो अलग-अलग वेबसाइटों चल स्थापित है पर Magento लेआउट अद्यतन परिभाषित करने के लिए है। एक ईबुक बेचता है और दूसरा नहीं तो व्यापार टीम आवेदन के मेरा खाता क्षेत्र में ग्राहक नेविगेशन ब्लॉक से "मेरे डाउनलोड" लिंक को हटाना चाहती है।यह संभव एक प्रति दुकान आधार

मैं लिंक डिजाइन/दृश्यपटल/आधार/लेआउट/downloadable.xml में परिभाषित देख सकते हैं, लेकिन किसी भी तरह से परिभाषित किया है कि मुझे वेबसाइटों में से एक पर लिंक को निष्क्रिय करते हैं नहीं देख सकता। जाहिर है, मैं वैश्विक स्तर पर बंद करने के लिए इस एक्सएमएल को ओवरराइड कर सकता हूं लेकिन मुझे स्कोप में सीमित होने की आवश्यकता है।

कैसे आप एक बहु साइट Magento स्थापना में एक भी वेबसाइट या स्टोर पर लेआउट ओवरराइड परिभाषित करते हैं?

नीचे प्रतिक्रियाओं के आधार पर, मैंने किया है निम्नलिखित:

बनाया एप्लिकेशन/स्थानीय/दाना/ग्राहक/ब्लॉक/खाता/Navigation.php और एक विधि removeLink() जो कोर कोड में नहीं है जोड़ा ।

अगर मैं local.xml में निम्नलिखित परिवर्तन करें, डाउनलोड लिंक हटा दिया जाता है:

<?xml version="1.0" encoding="UTF-8"?> 
<layout> 
    <default> 
     <remove name="catalog.compare.sidebar"/> 
    </default> 
    <customer_account> 
     <reference name="customer_account_navigation"> 
      <action method="removeLink" translate="label" module="downloadable"> <name>downloadable_products</name></action> 
     </reference> 
    </customer_account> 
</layout> 

लेकिन, अगर एक विशिष्ट दुकान लक्षित करने के लिए प्रयास करते हैं, ऐसा नहीं है। जैसे

<?xml version="1.0" encoding="UTF-8"?> 
<layout> 
    <default> 
     <remove name="catalog.compare.sidebar"/> 
    </default> 
    <STORE_mm> 
    <customer_account> 
     <reference name="customer_account_navigation"> 
      <action method="removeLink" translate="label" module="downloadable"> <name>downloadable_products</name></action> 
     </reference> 
    </customer_account> 
    </STORE_mm> 
</layout> 
+3

यदि आप अलग अलग विषयों का उपयोग तो यह वास्तव में आसान –

उत्तर

9

के रूप में एंटोन का सुझाव दिया, अपने स्टोर के लिए एक नए लेआउट विषय निर्धारित किया है। साइट-वाइड + स्टोर-स्कोप्ड के लिए एक अन्य दृष्टिकोण स्टोर लेआउट हैंडल का उपयोग करना होगा - यह <default> हैंडल की तरह है जो प्रत्येक स्टोर को लागू किया जाता है। यदि आपका स्टोर कोड (स्टोर प्रबंधित करें> स्टोर व्यू के अंतर्गत) 'foo' है तो स्टोर लेआउट हैंडल <STORE_foo> होगा।

रेफरी। Mage_Core_Controller_Varien_Action::addActionLayoutHandles()

+0

मैं इस पर स्टोर-स्कोप्ड दृष्टिकोण लेने की कोशिश कर रहा हूं और प्रतिबिंबित करने के लिए प्रश्न अपडेट कर चुका हूं। दोनों वेबसाइटें बहुत समान हैं इसलिए इस उदाहरण में एकाधिक थीम आदर्श नहीं हैं। हालांकि, STORE_x नियम संसाधित प्रतीत नहीं होता है। आपके पास कोई विचार है? –

+1

' 'हैंडल बस हैंडल हैं। वे अन्य हैंडल योग्य नहीं हैं; वे केवल स्टोर-व्यापी लेआउट अपडेट के लिए उपयोग योग्य हैं। आपके अपडेट किए गए उदाहरण को देखते हुए आपको अपने 'एमएम' स्टोर के लिए एक नया लेआउट थीम घोषित करने की आवश्यकता होगी, लेकिन उस संपूर्ण थीम में केवल स्थानीय.एक्सएमएल होगा, जिसमें सभी "वैश्विक" स्थानीय.एक्सएमएल निर्देश शामिल होंगे। आपका दूसरा विकल्प एक कस्टम मॉड्यूल बनाना है जो सिस्टम में एक नई लेआउट फ़ाइल जोड़ता है और बस स्थानीय.एक्सएमएल की तरह इसका उपयोग करता है। – benmarks

+0

एक अलग थीम दृष्टिकोण ले लिया जो एक हटाने के लिए परिवर्तन के साथ संयुक्त है लिंक विधि महान काम करता है - thx –

2

इस वेबसाइट के लिए अलग-अलग थीम बनाएं।
एप्लिकेशन/डिजाइन/दृश्यपटल/डिफ़ॉल्ट/वेबसाइट 1/लेआउट/local.xml
और एप्लिकेशन/डिजाइन/दृश्यपटल/डिफ़ॉल्ट/वेबसाइट 2/लेआउट/local.xml
आप डाउनलोड करने योग्य लेआउट के लिए आवश्यक परिवर्तन कहाँ कर सकते हैं बनाएँ। यह Magento सुविधा में वर्णित है।

+0

से +1 है। मैंने कई स्टोर विषयों को प्रबंधित करने के लिए सबसे साफ दृष्टिकोण पाया है, उन्हें अलग रखने के लिए, कई स्टोर स्कॉप्स को प्रभावित करने वाली किसी भी चीज़ के लिए डिफ़ॉल्ट रूप से फ़ॉलबैक के साथ। डिफ़ॉल्ट रूप से इसे एक अलग पैकेज में करने की भी सिफारिश करें, उदा। ऐप/डिज़ाइन/फ्रंटेंड/माईपैकेज/मायथीम, और ऐप/डिज़ाइन/फ्रंटेंड/माइपैकेज/डिफ़ॉल्ट क्रमशः। – DWils

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