2016-06-21 10 views
3

"User"という名前のテンプレートには、別のアイテムのIDである "Location"というフィールドがあります。 Powershellでは私はShow-ListViewを使用してフィールドのリストを返しますが、ロケーションには生IDが表示されますが、関連するロケーションの名前はむしろ表示されます。Sitecore Powershellレポート/ 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)あなたには、いくつかの理由でサイトコアAPIを介して、それを取得する必要がある場合、あなたはInitialize-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

はありがとう非常に、これは啓発です。 –

関連する問題