2016-06-21 58 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

謝謝非常,這是有啓發性的。 –