2012-06-23 10 views
6

ट्रिडियन में मेरे पास एक पृष्ठ है जिसमें एक घटक संलग्न है जिसमें एक टेक्स्ट फ़ील्ड है जिसमें iframe टैग <iframe src="http://mysite.com/l/5042/2012-06-21/9pb4y" width="100%" height="500" frameborder="0" style="border: 0" > </iframe> है। मैं सुनिश्चित करता हूं कि यह टैग C# & DWT template building blocks द्वारा संसाधित होने पर ही बना हुआ है। लेकिन अंत में जब पृष्ठ प्रकाशित होता है, पृष्ठ के स्रोत में, टैग <iframe src="http://mysite.com/l/5042/2012-06-21/9pb4y" width="100%" height="500" frameborder="0" style="border: 0" /> में बदल जाता है। इसके कारण पृष्ठ स्रोत iframe टैग के बाद कोई सामग्री नहीं दिखाता है। इसलिए iframe टैग वाले घटक के बाद पृष्ठ से जुड़ा कोई भी घटक पृष्ठ पर दिखाई नहीं देता है। कोई विचार क्यों बंद टैग </iframe> को स्वयं बंद टैग /> द्वारा प्रतिस्थापित किया गया है?घटक में iframe टैग प्रकाशन पर अधूरा पृष्ठ देता है

+2

क्या आप वाकई "एचटीएमएल करने के लिए XML कन्वर्ट" क्या TBB अपने डिफ़ॉल्ट समाप्त क्रिया में मौजूद है? वह टीबीबी आम तौर पर एक्सएमएल नोटेशन को एचटीएमएल में परिवर्तित करने के लिए माना जाता है जो पुराना ब्राउज़र पसंद करता है। –

+1

हां 'एक्सएमएल को एचटीएमएल में कनवर्ट करें' टीबीबी डिफॉल्ट फिनिश एक्शन में मौजूद है। –

उत्तर

6

फ्रैंक आप HTML TBB

(OR) 

को Convert एक्सएमएल इस्तेमाल कर सकते हैं क्रिस से इस सूत्र में प्रदान की तुम भी समाधान पर विचार कर सकते उल्लेख किया है। Creating anchor links in rich text fields with SDL Tridion 2011 SP1

आप स्कीमा फ़ील्ड परिभाषा के लिए xslt लागू करते हैं। जबकि टीबीबी विकल्प पूर्ण सीटी/पीटी पर लागू होता है, जहां आप इसका उपयोग करते हैं, लेकिन एक्सएसएलटी के साथ आप इसे फील्ड स्तर पर उपयोग कर सकते हैं और जब आप किसी अन्य उपयोग के मामलों के लिए CoreService का उपयोग करते हैं तो वही प्रारूप भी मिलता है।

+0

आपका लिंक उपयोगी था। वर्तमान में मैं इस अजीब व्यवहार को दबाने के लिए एक खाली div टैग का उपयोग कर रहा हूं- 'iframe src =" http://mysite.com/l/5042/2012-06-21/9pb4y "width =" 100% "ऊंचाई = "500" फ्रेमबॉर्डर = "0" शैली = "सीमा: 0">

' –

+1

आपका कामकाज आपकी समस्या को हल कर सकता है, लेकिन HTML मानक के अनुसार आपको iframe टैग में किसी अन्य टैग का उपयोग नहीं करना चाहिए। –

0

मुझे लगता है कि यह "क्लीन अप" टीबीबी के कारण है। मैं इस तरह टैग के बीच एक "खाली" अंतरिक्ष, कुछ रखने की कोशिश करेंगे:

<iframe src="YOUR_URL_HERE" width="100%" height="500" frameborder="0" style="border: 0" > &nbsp;</iframe> 

कि मार्कअप अछूता रखना चाहिए और उसके बंद होने वाले टैग के साथ iframe प्रदर्शित करेगा।

1

मैंने इस मुद्दे के बारे में पूछा, और जेमी सैंटोस ने मुझे इस समाधान के साथ मदद की।

मैं पहले से ही का उपयोग कर रहा था XML को HTML TBB में कनवर्ट करें, लेकिन यह काम नहीं किया क्योंकि बंद टैग पहले ही आउटपुट चर में रखा गया था।

तो, निम्नलिखित TBB एक पैरामीटर स्कीमा [टैग] जहां हम टैग (अल्पविराम से अलग किए) हम समापन टैग के साथ स्वयं बंद टैग (जैसे />) को बदलना चाहते हैं की एक सूची पारित का उपयोग करता है (उदाहरण के लिए)


    [TcmTemplateTitle("Remove Selft Closing Tag")] 
    public class RemoveSelfClosingTag : ITemplate 
    { 
     public override void Transform(Engine engine, Package package) 
     { 
      var outputItem = package.GetByName(Package.OutputName);

 //if not Output in package, return 
     if (outputItem == null) return; 

     var output = outputItem.GetAsString(); 
     var tagsCsv = package.GetValue("Tags"); //TBB parameter [tags using CSV] : 'iframe' 
     if (string.IsNullOrEmpty(tagsCsv)) return; 

     var tags = tagsCsv.Split(','); 
     foreach (var tag in tags) 
     { 
      RemoveSelftTag(tag, ref output); 
     } 
     outputItem.SetAsString(output); 
    } 

    //ref because string is immutable. 
    private void RemoveSelftTag(string tagName, ref string output) 
    { 
     var pattern = string.Format("(?'fistPart'<(?'tag'{0})[^>]+?)/>", tagName); 
     output = Regex.Replace(output, pattern, @"${fistPart}></${tag}>"); 
    } 
} 

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