我最近在 Sitecore 上花了一些时间,我注意到我正在开发的网站在某个Rich Text
领域有版权日期。不幸的是,现在是2012年。现在,解决这个问题的简单方法是简单地进入并更改Rich Text
具有版权信息的字段,但我不想担心在2014年更改它。
有没有办法在控件中插入动态文本Text
?即使我可以有一个可以在 C# 中手动替换的印记,这也比每年切换Text
a或强制手动更新要好。Literal
我最近在 Sitecore 上花了一些时间,我注意到我正在开发的网站在某个Rich Text
领域有版权日期。不幸的是,现在是2012年。现在,解决这个问题的简单方法是简单地进入并更改Rich Text
具有版权信息的字段,但我不想担心在2014年更改它。
有没有办法在控件中插入动态文本Text
?即使我可以有一个可以在 C# 中手动替换的印记,这也比每年切换Text
a或强制手动更新要好。Literal
您可以将自己的处理器添加到renderField
管道中,检查当前字段是否为RichText字段并将标记(例如 __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 字段都会被处理。
如果它仅用于一个年份值,我将使用 Literal 并填充并替换 Codebehind 中 Literal 的 Text 属性:
Literal.Text = FieldRenderer.Render(Context.Item, "RTE_FieldName")
.Replace("__YEAR__", DateTime.Now.Year.ToString());
然后将缓存添加到子布局中,并且仅在清除缓存后才渲染一次。