2012-06-23 11 views
6

In Tridion ho una pagina a cui è collegato un componente che ha un campo di testo in cui, c'è un tag iframe come <iframe src="http://mysite.com/l/5042/2012-06-21/9pb4y" width="100%" height="500" frameborder="0" style="border: 0" > </iframe>. Mi assicuro che questo tag rimanga così com'è mentre viene elaborato da C# & DWT template building blocks. Ma alla fine, quando la pagina viene pubblicata, nell'origine della pagina, il tag cambia in <iframe src="http://mysite.com/l/5042/2012-06-21/9pb4y" width="100%" height="500" frameborder="0" style="border: 0" />. A causa di ciò, l'origine della pagina non mostra alcun contenuto dopo il tag iframe. Pertanto, qualsiasi componente collegato alla pagina dopo che il componente contenente il tag iframe non viene visualizzato sulla pagina. Qualche idea sul perché il tag di chiusura </iframe> sia stato sostituito da un tag a chiusura automatica />?tag iframe nel componente dà una pagina incompleta sulla pubblicazione

+2

Sei sicuro la "Conversione XML in HTML" TBB è presente nelle vostre azioni Finish predefinite? Normalmente si suppone che TBB converta la notazione XML in HTML preferibile dal browser più vecchio. –

+1

Sì 'Converti XML in HTML' TBB è presente nelle azioni di finitura predefinite. –

risposta

6

Come accennato Frank è possibile utilizzare il codice XML Converti in formato HTML TBB

(OR) 

Si potrebbe anche prendere in considerazione la soluzione da Chris fornite in questo thread. Creating anchor links in rich text fields with SDL Tridion 2011 SP1

Si applica xslt per la definizione del campo dello schema. Mentre l'opzione TBB si applica al CT/PT completo a seconda di dove lo si utilizza, ma con XSLT è possibile utilizzarlo a livello di campo e ottiene anche lo stesso formato quando si utilizza il CoreService per altri casi di utilizzo.

+0

Il tuo link è stato utile. Attualmente sto usando un tag div vuoto per sopprimere questo comportamento strano come questo- ' ' –

+1

La tua soluzione potrebbe risolvere il tuo problema, ma come da standard html non dovresti usare altri tag nel tag iframe. –

0

Penso che questo sia dovuto alla TBB "Pulizia". Vorrei provare a posizionare uno spazio "vuoto" tra i tag, qualcosa di simile:

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

Questo dovrebbe mantenere il markup intatta e visualizzerà l'iframe con il suo tag di chiusura.

1

Ho chiesto informazioni su questo problema e Jamie Santos mi ha aiutato con questa soluzione.

Stavo già utilizzando Convertire XML in HTML TBB, ma questo non ha funzionato perché il tag di chiusura era già inserito nella variabile di output.

Così, il seguente TBB utilizza un parametro Schema [Tag] dove passiamo una lista di tag (separati da virgola) che vogliamo cambiare il tag di chiusura di auto (ad esempio />) con il tag di chiusura (ad esempio)


    [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}>"); 
    } 
} 

Problemi correlati