组件中的iframe标签在发布时提供不完整的页面

时间:2012-06-23 11:06:36

标签: tridion tridion-2011 tridion2009

在Tridion中,我有一个附加了组件的页面,其中包含一个文本字段,其中有一个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>被自闭标记/>替换?

3 个答案:

答案 0 :(得分:6)

正如弗兰克所说,你可以使用Convert XML to HTML TBB

(OR)

您还可以考虑Chris在此主题中提供的解决方案。 Creating anchor links in rich text fields with SDL Tridion 2011 SP1

您可以将xslt应用于架构字段定义。虽然TBB选项适用于完整的CT / PT,具体取决于您使用它的位置,但使用XSLT,您可以在字段级别使用它,并在将CoreService用于任何其他用例时获得相同的格式。

答案 1 :(得分:1)

我问过这个问题,Jamie Santos帮我解决了这个问题。

我已经在使用将XML转换为HTML TBB ,但这不起作用,因为结束标记已经放在输出变量中。

因此,以下TBB使用参数Schema [Tags],我们传递一个标签列表(逗号分隔),我们想要用Closing标签(例如)


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

答案 2 :(得分:0)

我认为这是由于&#34;清理&#34; TBB。我会尝试放置一个空的&#34;标签之间的空格,如下所示:

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

这应该保持标记不变,并显示iframe及其结束标记。