Как получить дату создания в sitecore с powershell - PullRequest
1 голос
/ 04 июля 2019

Я написал скрипт для замены "$date" в дате выпуска многих элементов Sitecore на дату их создания (created).

У меня проблема с получением этого поля от Sitecore.

Я пробовал это:

$rootItem = Get-Item master:/content
$sourceTemplate = Get-Item "/sitecore/content/.../item 1"
foreach($field in $sourceTemplate.Fields) {
    if (($field -ne $null) -And ($field -like '$date')) {
        $sourceTemplate.Editing.BeginEdit()
        $CreatedDate = .......
        $field.Value = [sitecore.dateutil]::ToIsoDate($CreatedDate)
        $sourceTemplate.Editing.EndEdit()
    }
}

Я также пытался получить это поле к ID, но оно не работает.

У кого-нибудь есть идея, пожалуйста? Спасибо

1 Ответ

0 голосов
/ 04 июля 2019

Если вы хотите проверить встроенные поля Sitecore, вам сначала нужно вызвать $sourceTemplate.Fields.ReadAll();.

Вам следует сравнить значение поля со строкой $date, а не с самим полем.

Затем просто получите строку, которая хранится в поле __Created вместо получения даты, и затем отформатируйте ее обратно в строку даты ISO.

И последнее - не вызывайте Editing.BeginEdit() иEditing.EndEdit() несколько раз для одного и того же элемента - Sitecore выполняет несколько жестких операций при его вызове, поэтому убедитесь, что вы вызываете его только один раз для каждого элемента, который в этом нуждается.

$sourceTemplate = Get-Item "/sitecore/content/home/test"
$sourceTemplate.Fields.ReadAll();
$editing = $false
foreach($field in $sourceTemplate.Fields) {
    if ($field.Value -eq '$date') {
        if (!$editing) {
            $editing = $true
            $sourceTemplate.Editing.BeginEdit();
        }
        $field.Value = $sourceTemplate.Fields["__Created"].Value
    }
}

if ($editing) {
    $edited = $sourceTemplate.Editing.EndEdit();
}
...