2016-04-18 6 views
3

ユーザーがリッチテキストエディタフィールドに特定のテキストを入力すると、そのテキストに値が表示されるカスタムトークンを作成しようとしています。だから、リッチテキストエディタフィールドに "今日の月は@@ tester"のように@@ testerというユーザ入力をします。私は、sitecore内の任意のリッチテキストエディタフィールドで@@ testerを見つけようとしていて、テキストが置き換えられる場所に一致するタイトルフィールドにそのトークンを見つけるトークンを見つけたら、C#を探しています。だから、すなわち:sitecoreでカスタムトークンを作成する方法

Item Name = token 
Item ID = {06912058-6U9A-4BBF-BAE3-9306974EBE68} 
Title = @@tester 
Content (rich text editor) = February 

は、私がこれまで持っている:

namespace LonzaWeb.Pipeline.RenderField 
{ 
public class AddToken 
{ 
    public void Process(RenderFieldArgs args) 
    { 
     Item currentItem = Sitecore.Context.Item; 

     if ((args.FieldTypeKey == "rich text") && currentItem.TemplateID.ToString() == "{06912058-6U9A-4BBF-BAE3-9306974EBE68}") 
     { 

      var tItem = currentItem.Fields["Title"].ToString(); 

      if (tItem != null) { 
       Regex regex = new Regex(tItem); 
       Match match = regex.Match(tItem); 
      } 
     } 
    } 
} 
} 

はまた、私は正規表現のパターンマッチングを使用しようとしています。私はそれを探していることを確認するために、webconfigファイルにこれを追加しました。

+0

?リッチテキストエディタを持っているページに –

+0

があります – Keith

+0

ライブサイトではそうですか? –

答えて

1

ライブサイトでリッチテキストの値をレンダリングするので、ページロード時に置換を実行できます。以下の方法は、集中一つであるので、リッチテキスト置換は、あなたが一元化などの方法を使用することができますし、あなただけの必要とされるさまざまなパラメータを渡す必要があり、それを

public static string RichTextReplacer(Item currentItem, string fieldName) 
{ 
    var richTextValue = currentItem.Fields[fieldName].Value; 

    var getToken = Sitecore.Context.Database.Items.GetItem("path to your token item"); 

    var sb = new StringBuilder(richTextValue); 

    sb.Replace(getToken.Fields["Title"].value, getToken.Fields.["Content"].value); 

    return sb.ToString(); 
} 

を使用することができます必要とする他のサブレイアウトすることができます。あなたのニーズに合ったパラメータを追加/削除することができます

6

<renderField>パイプラインを延長する方がいいでしょう。

独自のプロセスメソッドを使用して新しいタイプを提供することができます。処理されるフィールドのタイプは、RenderFieldArgs.FieldTypeKeyでチェックできます。 FieldValueプロパティは、サポートされている各トークンの値で更新できます。

パイプライン内の各プロセッサは、結果のargsを次のプロセッサに渡します。 GetTextFieldValueの後にこのパッチを追加します。あなたは、フロントページやサイトコアバックオフィスにレンダリングするときに値を交換する必要が

http://www.sitecore.net/learn/blogs/technical-blogs/sitecorebetter/posts/2013/06/extending-the-sitecore-renderfield-pipeline.aspx

http://www.sitecore.net/learn/blogs/technical-blogs/john-west-sitecore-blog/posts/2011/08/replace-tokens-in-rich-text-fields-using-the-sitecore-aspnet-cms.aspx

関連する問題