最近我一直花費在Sitecore上一段時間,並且我注意到我正在使用的網站在Rich Text
字段中有版權日期。不幸的是,這是2012年。現在,解決這個問題的簡單方法是簡單地進入並更改具有版權信息的Rich Text
字段,但我不想擔心在2014年更改它。將動態文本插入Sitecore Rich Text字段
有沒有辦法將動態文本插入到Text
控件中?即使我可以在C#中手動替換,我們也可以選擇手動替換,或者將Text
切換爲Literal
,或者每年強制手動更新。
最近我一直花費在Sitecore上一段時間,並且我注意到我正在使用的網站在Rich Text
字段中有版權日期。不幸的是,這是2012年。現在,解決這個問題的簡單方法是簡單地進入並更改具有版權信息的Rich Text
字段,但我不想擔心在2014年更改它。將動態文本插入Sitecore Rich Text字段
有沒有辦法將動態文本插入到Text
控件中?即使我可以在C#中手動替換,我們也可以選擇手動替換,或者將Text
切換爲Literal
,或者每年強制手動更新。
你可以用當年自己的處理器添加到renderField
管道,檢查當前場是否是富文本場和更換令牌(如__YEAR__):
<renderField>
<!--... other processors -->
<processor type="My.Assembly.Namespace.ReplaceTokenProcessor, My.Assembly" />
<!--... other processors -->
</renderField>
和處理器的代碼:
namespace My.Assembly.Namespace
{
public class ReplaceTokenProcessor
{
public virtual void Process(RenderFieldArgs args)
{
if (args.FieldTypeKey != "rich text")
return;
args.Result.FirstPart = (args.Result.FirstPart == null) ? null : args.Result.FirstPart.Replace("__YEAR__", DateTime.Now.Year.ToString());
args.Result.LastPart = (args.Result.LastPart == null) ? null : args.Result.LastPart.Replace("__YEAR__", DateTime.Now.Year.ToString());
}
}
}
解決方案Maras的建議工作,但對我來說,這聽起來有點矯枉過正只是在RTE領域的一個日期。 除此之外,您的網站中每個頁面上呈現的每個RTE字段都將被處理。
如果是隻有一年價值我會用文字和填充和更換文字的代碼隱藏的Text屬性:
Literal.Text = FieldRenderer.Render(Context.Item, "RTE_FieldName")
.Replace("__YEAR__", DateTime.Now.Year.ToString());
然後添加緩存到sublayout並且僅呈現一次緩存清除後。
這正是我所需要的。 – cwallenpoole 2013-03-13 15:02:45
對於那些不習慣使用'processor's的筆記,您應該將'processor'節點放在'renderField'節點的下方,以確保您獲得所需的行爲。 – cwallenpoole 2013-03-13 15:24:00