6

在 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>被自结束标签代替/>吗?

4

3 回答 3

6

正如弗兰克所说,您可以使用将 XML 转换为 HTML TBB

(OR)

您还可以考虑 Chris 在此线程中提供的解决方案。使用 SDL Tridion 2011 SP1 在富文本字段中创建锚链接

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

于 2012-06-23T16:29:10.010 回答
1

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

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

因此,下面的 TBB 使用参数 Schema [Tags] 我们传递一个标签列表(逗号分隔),我们想用关闭标签(例如)更改自关闭标签(例如 />)


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

于 2014-06-27T17:47:38.517 回答
0

我认为这是由于“清理”TBB。我会尝试在标签之间放置一个“空白”空间,如下所示:

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

这应该保持标记不变,并将显示带有结束标记的 iframe。

于 2014-06-27T14:30:06.817 回答