2013-02-12 15 views
9

में क्लिक ईवेंट अक्षम करना मैं अब कुछ समय के लिए इसे हल करने का प्रयास कर रहा हूं, लेकिन मैं ठीक से काम करने वाली किसी चीज़ के साथ नहीं आ सकता।XPM संपादन (रेज़र)

आप देखते हैं कि हमारी साइट पर बहुत सारी क्लिक करने योग्य छवियां या divs मौजूद हैं, जो संपूर्ण छवि पर आने वाले घटक लिंक के साथ प्रदान की जाती हैं। यदि आप XPM को सक्रिय करते हैं और घटक का चयन करने का प्रयास करते हैं, तो यह इसके घटक लिंक पर क्लिक करेगा, और आपको सही पृष्ठ पर रूट करेगा।

मैं संपादन करते समय केवल इस व्यवहार को अक्षम करने के लिए एक त्वरित समाधान की तलाश कर रहा हूं, और अब तक मैं कुछ कामकाज के साथ आया हूं जो कि मैं बिल्कुल नहीं देख रहा हूं।

उदाहरण के लिए आप शानदार रेजर मध्यस्थ स्थिति (IsSiteEditEnabled) का उपयोग कर सकते हैं, हालांकि, यह फ़ंक्शन हमेशा सत्य के लिए हल हो जाता है यदि आप वर्तमान में प्रकाशित प्रकाशन/पृष्ठ/सर्वर साइट संपादन के लिए सक्षम हैं। इसका मतलब यह है कि यदि आप टेम्प्लेट-विशिष्ट कोड डालने जैसे

@if(!IsSiteEditEnabled){ 
<a tridion:href="#"> other code, ending in closing of </a>... 
} 

नहीं उत्पादन एक लिंक जब साइट संपादित करें (XPM) सक्रिय नहीं है, लेकिन सक्रिय किया जा सकता। संक्षेप में सर्वर स्टेजिंग।

जब तक कोई अन्य विकल्प न हो, मुझे कोड काम करने के लिए एक लाइव प्रकाशन सर्वर की आवश्यकता होगी, लेकिन इससे समस्या उत्पन्न होगी कि संपादकों को लगता है कि स्टेजिंग सर्वर पर लिंक टूटा हुआ है।

मुझे यह महसूस हो रहा है कि यहां कुछ ऐसा है जो मैं यहां लापता हूं। मुझे विश्वास है कि इस मुद्दे पर हो सकता है किसी के द्वारा सामना करना पड़ा रहा है जैसे आप :)

इस ब्लॉक में से एक

<article class="block-2x2 banner"> 
    <tcdl:ComponentField name="component_link"></tcdl:ComponentField> 
    @if(!IsSiteEditEnabled){ 
     @:<a tridion:href="@Fields.component_link"> 
     } 
     <div class="image-container"> 
      <tcdl:ComponentField name="image"><img src="@Fields.image" alt="@Fields.image.altText"></tcdl:ComponentField> 
     </div> 
     <div class="hgroup"> 
      <h4 class="primary-title">@RenderComponentField("header", 0)</h4> 
      <h5 class="secondary-title">@RenderComponentField("title", 0)</h5> 
     </div> 
    @if(!IsSiteEditEnabled){</a>} 
</article> 
+0

ऐसा लगता है कि इस प्रश्न को एक बाउंटी की आवश्यकता हो सकती है ... – MDa

+0

मुझे लगता है कि आपको एक उपहार से अधिक की आवश्यकता हो सकती है - मैं वास्तव में आपके प्रश्न से उलझन में हूं - शायद इसे दोबारा विचार करें। आप लिंक को अक्षम क्यों करना चाहते हैं? क्या ऐसा इसलिए है क्योंकि आप घटकों को संपादित करने से रोकते हैं? –

+0

खैर, संपूर्ण घटक एक बड़ा क्लिक बैनर है। तो इसका मतलब क्या है, साइट पर इसे संपादित करने के लिए, आपको उस पर हां-क्लिक करके कहा गया घटक का ध्यान रखना चाहिए। क्योंकि इसमें एक लिंक है, आपको दूसरे पृष्ठ पर रीडायरेक्ट किया जाएगा और संपादन असंभव है। – MDa

उत्तर

4

आप सिर्फ इस तरह किसी और के कुछ फार्म में डालने पर विचार हो सकता है:

@if(!IsSiteEditEnabled){ 
    <a tridion:href="#"> other code, ending in closing of </a>... 
}else{ 
    <a href="#" onclick="alert('Image links not supported in XPM');"></a> 
} 

यह कम से कम यह समझाना चाहिए कि लिंक आपके संपादकों के लिए क्यों काम नहीं कर रहे हैं। हालांकि मैंने परीक्षण नहीं किया है अगर यह वास्तव में आपकी समस्या हल करता है।

यह क्लीनर होगा सिर्फ एक class="NoClickImageLink" विशेषता जोड़ने, और कहा कि वर्ग के साथ सभी टैग करने के लिए JavaScript कार्रवाई जोड़ने पृष्ठ लोड होने .. जो टैग के साथ onclic घटना एकत्रित करती है

+0

यह अनिवार्य रूप से जाने का सही तरीका है, लेकिन समस्या यह है कि स्टेजिंग साइट में लिंक सक्रिय नहीं होंगे। इसका अर्थ यह भी है कि जब साइट एडिट * सक्षम हो सकता है, लेकिन इस समय सक्रिय नहीं है। संपादकों को उस पृष्ठ पर जाने के लिए एड्रेसबार यूआरएल के माध्यम से नेविगेट करने की आवश्यकता होगी, जिसे वे देखना चाहते हैं। – MDa

+1

मुझे लगता है कि आपका एकमात्र विकल्प या तो नेविगेशन की अनुमति देने के लिए साइट एडिट मोड में एक टेक्स्ट लिंक जोड़ना है, या अपने घटक के संपादन की अनुमति देने के लिए एक विशेष div/marker जोड़ें। एक ही समय में अपने दोनों लक्ष्यों को प्राप्त करना असंभव लगता है। –

+1

इस दृष्टिकोण के लिए टेम्पलेट परिवर्तन की आवश्यकता है जो इसे एक बेहतर समाधान नहीं बनाता है। चूंकि XPM काफी हद तक क्लाइंट साइड कोड है, इसलिए आप वहां समाधान भी ढूंढ सकते हैं। –

2

जब JQuery का उपयोग कर आप को रोका जा सकता करने के लिए लंगर लिंक इस कोड का उपयोग करके काम करने के लिए:

$('a').click(function(event) { 
    event.preventDefault(); 
}); 

$(this) क्लिक किया तत्व है जो आप तो मामला आप कुछ लंगर लिंक की जरूरत है काम कर रखने के लिए पुष्टि कर सकते हैं संदर्भ होगा।

इस कोड को आप XPM के साथ संपादित करने के मामले में इंजेक्शन दिए जा सकते हैं और आपके टेम्पलेट को बहुत सरल बना देंगे।

पीएस। मैंने इस सुझाव का परीक्षण नहीं किया।

2

चूंकि XPM पूरी तरह क्लाइंट पक्ष है ... मुझे लगता है कि आपको कुछ चाल का उपयोग करके इसे करना होगा जैसा कि मैंने वर्णन किया है; http://tcm4lex.wordpress.com/2013/07/04/javascript-detection-of-experience-manager/

लेख ट्रिपियन 2013 पर XPM के साथ मेरे अनुभव से लिखा गया है लेकिन वैसे भी एक अच्छा प्रारंभिक बिंदु हो सकता है। एक बार आपके पास यह पता लगाने के लिए कि पृष्ठ कब संपादन मोड में है, आप एक जावास्क्रिप्ट चाल कर सकते हैं जैसे कि आर्जेन ऊपर वर्णित है।

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