В 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>
заменяется самозакрывающимся тегом />
?тег iframe в компоненте дает неполную страницу при публикации
ответ
Как Фрэнк упомянул вы можете использовать Преобразовать XML в HTML Т
(OR)
Вы могли бы также рассмотреть решение от Криса предусмотрен в этой теме. Creating anchor links in rich text fields with SDL Tridion 2011 SP1
Вы применяете xslt для определения поля схемы. В то время как опция TBB применяется к полной CT/PT в зависимости от того, где вы ее используете, но с XSLT вы можете использовать ее на уровне поля и также получать тот же формат, когда используете CoreService для любых других случаев использования.
Ваша ссылка была полезна. В настоящее время я использую пустой тег div для подавления этого странного поведения, подобного этому: ' ' –
Возможно, решение вашей проблемы может решить вашу проблему, но согласно стандарту html вам не следует использовать какие-либо другие теги в теге iframe. –
Я думаю, что это происходит из-за «Clean Up» TBB. Я хотел бы попробовать размещение «пустое» пространство между тегами, что-то вроде этого:
<iframe src="YOUR_URL_HERE" width="100%" height="500" frameborder="0" style="border: 0" > </iframe>
Это должно сохранить разметку нетронутой и отобразит IFRAME с его закрывающим тегом.
Я спросил об этом, и Джейми Сантос помог мне с этим решением.
Я уже использовал Преобразование XML в HTML TBB, но это не сработало, потому что закрывающий тег уже был помещен в выходную переменную.
Итак, следующий TBB использует параметр схемы [Теги], где мы перейдем список тегов (разделенные запятыми) мы хотим изменить само закрывающий тег (например, />) с закрывающим тегом (например)
[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}>");
}
}
вы уверены, что «Преобразование XML в HTML» ТВВ присутствует в ваших сообщениях Конца действия? Предполагается, что TBB должен преобразовать XML-нотацию обратно в HTML, предпочитаемый более старым браузером. –
Да 'Конвертировать XML в HTML' TBB присутствует в по умолчанию. –