【问题标题】:How to get creation date in sitecore with powershell如何使用 powershell 在 sitecore 中获取创建日期
【发布时间】:2019-07-04 09:21:51
【问题描述】:

我编写了一个脚本,以便将许多 Sitecore 项目的发布日期中的"$date" 替换为它们的创建日期 (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 获取此字段,但它不起作用。

请问有人有想法吗? 谢谢

【问题讨论】:

  • edit 问题并详细说明...它不起作用 肯定(过于宽泛而无法诊断)。例如,您是否遇到任何错误?

标签: powershell sitecore


【解决方案1】:

如果要查看 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();
}

【讨论】:

    猜你喜欢
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多