$ date未获取当前日期 - Sitecore

时间:2015-10-09 06:44:53

标签: datetime sitecore

我在sitecore标准值中设置datetime字段的默认值时遇到问题。 我知道$ date取当前日期。如果我在日期时间字段的标准值中指定$ date,则日期始终为“1/1/0001”。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

可以在标准值的字段中输入标记,然后将其替换为其他值,但仅当创建使用该模板的新项目时 。它不会为使用此模板的现有项目设置日期。

$ date 是其中一个令牌,它会替换为系统日期( yyyyMMdd )。

John West撰写的博客文章解释了如何Expand Standard Values Tokens in Existing Items with the Sitecore ASP.NET CMS

修改

以下代码是MasterVariablesReplacer类的一部分,用于替换 $ date 标记:

text = this.ReplaceWithDefault(text, "$date", (Func<string>) (() => DateUtil.IsoNowDate), context);

ReplaceVariables处理器调用它,该处理器是expandInitialFieldValue管道的一部分(对于所有/sitecore/admin/showconfig.aspx处理器,请参阅expandInitialFieldValue)。

您可以尝试将自己的处理器添加到此管道中,看看$date未正确替换的原因:

  public class ReplaceVariables : ExpandInitialFieldValueProcessor
  {
    public override void Process(ExpandInitialFieldValueArgs args)
    {
      Assert.ArgumentNotNull((object) args, "args");
      MasterVariablesReplacer variablesReplacer = Factory.GetMasterVariablesReplacer();
      string text = args.SourceField.Value;
      if (variablesReplacer == null)
        args.Result = text;
      else
        args.Result = variablesReplacer.Replace(text, args.TargetItem);
    }
  }