iframe
Tridion には、 のようなタグがあるテキスト フィールドを持つコンポーネントが添付されているページがあります<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
Frank が述べたように、Convert XML to 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 に答える