cwa*_*ole 2 sitecore richtextbox
我最近在Sitecore上花了一些时间,我注意到我正在处理的网站在一个Rich Text字段中有版权日期.不幸的是,它是2012年.现在,解决这个问题的简单方法是简单地进入并更改Rich Text具有版权信息的字段,但我不想担心在2014年更改它.
有没有办法将动态文本插入Text控件?即使我可以有一个我可以在C#中手动替换的印记,这Text对于Literal每年切换一个或强制手动更新是更可取的.
您可以将自己的处理器添加到renderField管道,检查当前字段是否为RichText字段,并用当前年份替换令牌(例如__YEAR__):
<renderField>
<!--... other processors -->
<processor type="My.Assembly.Namespace.ReplaceTokenProcessor, My.Assembly" />
<!--... other processors -->
</renderField>
Run Code Online (Sandbox Code Playgroud)
和处理器的代码:
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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
Maras 提出的解决方案有效,但对我来说,对于 RTE 领域中的一个日期来说,这听起来有点矫枉过正。除此之外,处理在您网站的每个页面上呈现的每个 RTE 字段。
如果它仅用于一个 Year 值,我将使用 Literal 并在 Codebehind 中填充和替换 Literal 的 Text 属性:
Literal.Text = FieldRenderer.Render(Context.Item, "RTE_FieldName")
.Replace("__YEAR__", DateTime.Now.Year.ToString());
Run Code Online (Sandbox Code Playgroud)
然后将缓存添加到子布局中,并且仅在缓存清除后才呈现一次。
| 归档时间: |
|
| 查看次数: |
1763 次 |
| 最近记录: |