在 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>
被自结束标签代替/>
吗?
问问题
723 次
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" > </iframe>
这应该保持标记不变,并将显示带有结束标记的 iframe。
于 2014-06-27T14:30:06.817 回答