私はサイトコア 7.2 を使用しています & 以下のように単一行のテキストのタグを囲むためのパイプラインを作成しました。
public class SingleLineFieldEnclosingTags
{
public void Process(RenderFieldArgs args)
{
if (args.FieldTypeKey != "single-line text" && args.FieldTypeKey != "multi-line text")
return;
args.Result.FirstPart = Helper.WrapInTags(args);
}
}
public static string WrapInTags(RenderFieldArgs args)
{
string keyInParam = args.Parameters.Where(x => x.Key.Contains("enclosingTag")).FirstOrDefault().Key;
string wrappedText = args.Result.FirstPart;
if (IsPageEditorMode)
{
return wrappedText;
}
if (keyInParam != null && keyInParam.Trim().Equals("enclosingTag"))
{
if (args.Parameters.ContainsKey(keyInParam))
{
string[] paramTags = args.Parameters[keyInParam].Split('|').Reverse().ToArray();
foreach (string tag in paramTags)
{
wrappedText = string.Concat("<", tag.Trim(), ">", wrappedText, "</", tag.Trim().Split(' ')[0], ">");
}
if (wrappedText.Contains("enclosingTag"))
{
// remove enclosing tag attribute from tags
wrappedText = Regex.Replace(wrappedText, @"enclosingTag\s*=\""\s*?.*\""", string.Empty, RegexOptions.IgnoreCase);
}
return wrappedText;
}
}
return wrappedText;
}
正常に動作していますが、フィールドを編集または保存すると問題が発生し、それを次のように保存します
<p class="intro">Do you need something specific?</p>
囲みタグも含めて。パブリッシュ モードでは、次のように 2 回、3 回と表示されます。
<p class="intro"></p>
<p class="intro"></p>
<p class="intro"></p>
<p class="intro">Do you need something specific?</p>
<p></p>
<p></p>
<p></p>