名为“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;有没有办法检索其字段?
答案 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; }