2015-10-09 2 views
0

У меня возникла проблема при установке значения по умолчанию для поля datetime в стандартных значениях sitecore. Я знаю, что $ date принимает текущую дату. Если я укажу $ date в стандартных значениях для поля даты даты, она всегда принимает дату как «1/1/0001».

Как исправить это?

ответ

2

Можно ввести маркеры в полях стандартных значений, а затем они будут заменены другими значениями, но только при создании нового элемента, который использует этот шаблон. Он не будет устанавливать дату для существующих элементов, которые используют этот шаблон.

$ Дата является одним из маркеров, и это replates с системной датой (YYyyMmDd).

Существует сообщение в блоге, написанное Джоном Западом, в котором объясняется, как Expand Standard Values Tokens in Existing Items with the Sitecore ASP.NET CMS.


EDIT:

Вот код, который является частью 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); 
    } 
    } 
+0

Да .. Я использую дату $ в качестве маркеров в стандартном значении. Который в идеале должен быть заменен текущей датой. Но это всегда принимает дату как 1/1/0001 – archie

+0

Просто чтобы подтвердить, вы сначала установили $ date token в стандартных значениях, а затем создали новый элемент, используя этот шаблон, и дата была установлена ​​на дату time.min после этого? –

+0

Да. Это верно. Я создаю новый элемент после того, как я установил токен в стандартных значениях. – archie

Смежные вопросы