W Tridion Mam stronę, do której dołączony jest komponent, który ma pole tekstowe, w którym znajduje się znacznik iframe
, taki jak <iframe src="http://mysite.com/l/5042/2012-06-21/9pb4y" width="100%" height="500" frameborder="0" style="border: 0" > </iframe>
. Zapewniam, że ten tag pozostaje niezmieniony podczas przetwarzania przez C# & DWT template building blocks
. Ale na końcu, gdy strona zostanie opublikowana, w źródle strony tag zmienia się na <iframe src="http://mysite.com/l/5042/2012-06-21/9pb4y" width="100%" height="500" frameborder="0" style="border: 0" />
. Z tego powodu źródło strony nie wyświetla żadnych treści po tagu iframe
. Tak więc każdy komponent dołączony do strony po tagu zawierającym tag iframe
nie pojawia się na stronie. Jakiś pomysł, dlaczego zamykający tag </iframe>
został zamieniony na samozamykający tag: />
?Znacznik iframe w komponencie podaje niepełną stronę przy publikacji
Odpowiedz
Frank wymienić można użyć XML Konwersja do HTML TBB
(OR)
Można również rozważyć rozwiązanie z Chris zawarte w tym wątku. Creating anchor links in rich text fields with SDL Tridion 2011 SP1
Zastosowano xslt dla definicji pola schematu. O ile opcja TBB dotyczy pełnego CT/PT w zależności od tego, gdzie go używasz, ale z XSLT możesz go używać na poziomie pola, a także uzyskuje ten sam format, gdy używasz CoreService do innych zastosowań.
Twój link był użyteczny. Obecnie używam pustego znacznika div, aby stłumić dziwne zachowanie - ' ' –
Twoje obejście może pomóc w rozwiązaniu problemu, ale zgodnie ze standardem HTML nie powinieneś używać żadnych innych tagów w tagu iframe. –
Myślę, że to zasługa TBB "Oczyścić". Chciałbym spróbować umieszczenie „puste” przestrzeń między znacznikami, coś takiego:
<iframe src="YOUR_URL_HERE" width="100%" height="500" frameborder="0" style="border: 0" > </iframe>
To powinno zachować znaczników nietknięty i wyświetli iframe z jego znacznika zamykającego.
Zapytałem o ten problem, a Jamie Santos pomógł mi w rozwiązaniu tego problemu.
Już używałem Konwersja XML na HTML TBB, ale to nie zadziałało, ponieważ znacznik zamykający został już umieszczony w zmiennej wyjściowej.
Więc dodaje TBB wykorzystuje parametr Schema [tagi] gdzie mijamy listę tagów (oddzielone przecinkiem) chcemy zmienić samodzielne znacznika zamykającego (np />) z tagiem zamykającym (np)
[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}>");
}
}
Czy jesteś pewien, że "Konwersja XML do HTML" TBB występuje w domyślnej fińskich działań? Ten typ TBB zwykle powinien przekonwertować notację XML z powrotem na HTML, którą preferuje starsza przeglądarka. –
Tak 'Konwertuj XML na HTML' TBB jest obecny w Domyślnych działaniach zakończeniowych. –