Sitecore Powershell Reports / ListView:从查询返回的ID中检索项目

时间:2016-06-21 11:52:38

标签: powershell sitecore sitecore8

名为“User”的模板有一个名为“Location”的字段,它是另一个项目的ID;在Powershell中我使用 Show-ListView 来返回字段列表,但是Location显示了原始ID,而我更愿意显示所涉及位置的名称。

我尝试检索此信息,但我不确定Powershell查询中可用的语法。我的尝试如下:

Get-Item master: -Query "/sitecore/content/sites/data/people//*[@@templatename='Person']" |
    Show-ListView -property "First Name",
    @{Label="Surname"; Expression={$_."Surname"}},
    @{Label="Location"; Expression={[Sitecore.Context.Database.GetItem]::FromId($_."Location").Title}}

......什么都不产生。

$_."Location"

是项目的ID;有没有办法检索其字段?

1 个答案:

答案 0 :(得分:3)

秘密在于,默认情况下,Sitecore没有从字段转换的方便属性。在这种情况下,我们讨论的是您的位置项上的Get-Item master: -Query "/sitecore/content/sites/data/people//*[@@templatename='Person']" | Show-ListView -property "First Name", @{Label="Surname"; Expression={$_."Surname"}}, @{Label="Location"; Expression={(Get-Item master:\ -ID $_."Location").Title}} 属性。你能做的是:

1)通过提供者获取位置项,如下所示:

Get-Item

注意最后一行中对Initialize-Item的调用。

2)如果您出于某种原因需要通过Sitecore API获取它,您可以将其传递给Get-Item master: -Query "/sitecore/content/sites/data/people//*[@@templatename='Person']" | Show-ListView -property "First Name", @{Label="Surname"; Expression={$_."Surname"}}, @{Label="Location"; Expression={([Sitecore.Configuration.Factory]::GetDatabase("master").GetItem($_."Location") | Initialize-Item).Title}} ,我们将围绕Item对象包装这些属性,如下所示:

public string Name { get; set; }