2016-06-21 71 views
3

名为“User”的模板有一个名为“Location”的字段,它是另一个项目的ID;在Powershell中,我使用Show-ListView返回字段列表,但位置显示的是原始ID,而我更愿意显示相关位置的名称。Sitecore Powershell Reports/ListView:从查询返回的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;有没有办法检索它的字段?

回答

3

秘诀在于,默认情况下Sitecore没有从字段转换的方便属性。在这种情况下,我们正在讨论您的位置项目上的Title属性。你可以做的是:

1)通过服务提供商获取的位置项目,像这样:

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}} 

通知调用Get-Item的最后一行。

2)如果您需要通过Sitecore的API由于某种原因,你可以把它管道取水的时候,以Initialize-Item和你喜欢的,所以我们会环绕Item对象的属性:

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}} 
+0

谢谢非常,这是有启发性的。 –