在 Sitefinity 中查找带有特定标签的页面
Find pages with certain tags in Sitefinity
我正在寻找一种方法来查找包含特定标签的所有页面。对于文档,我可以这样做:
// convert list of tags to list of Guids
var tagGuids = GetGuidsForTags(tags);
// find all items with one of these tags
return App.WorkWith().Documents()
.Where(ni => ni.GetValue<IList<Guid>>("Tags").Any(tag => tagGuids.Contains(tag)) &&
ni.Status == ContentLifecycleStatus.Live
)
.Get().DistinctBy(x => x.Id).ToList();
但是当改用 App.WorkWith().Pages()
时,我收到一条错误消息,指出 PageNode 没有名为 "Tags" 的自定义字段。
An exception of type 'System.Exception' occurred in
Telerik.Sitefinity.Model.dll but was not handled in user code
Additional information: Wrong custom field 'Tags' for type
'Telerik.Sitefinity.Pages.Model.PageNode'
有谁知道如何获取包含某些标签的页面列表?我正在使用 Sitefinity 8.1。
澄清一下,我没有向我的主页添加自定义标签字段。当我这样做时,我两次获得该字段:
所以 Sitefinity 似乎默认有一个 Tags 字段...
我假设您添加了一个名为 "Tags" 的自定义页面字段。
如果您有该字段,此代码将为您获取页面。
var pages = App.WorkWith().Pages()
.LocatedIn(PageLocation.Frontend)
.ThatArePublished()
.Where(p => p.GetValue<TrackedList<Guid>>("Tags").Any(tag => tagGuids.Contains(tag)))
.Get().ToList(); //ToList to commit to memory for iteration if needed
显然我的 Sitefinity 配置有误。一旦我删除了自制的自定义字段标签,它也删除了原来的标签。所以现在我只剩下一个,现在是一个自定义字段。完成此操作后,我可以使用原始问题中的代码访问标签...
希望我能解释一下,因为我花了很长时间才弄明白。
我正在寻找一种方法来查找包含特定标签的所有页面。对于文档,我可以这样做:
// convert list of tags to list of Guids
var tagGuids = GetGuidsForTags(tags);
// find all items with one of these tags
return App.WorkWith().Documents()
.Where(ni => ni.GetValue<IList<Guid>>("Tags").Any(tag => tagGuids.Contains(tag)) &&
ni.Status == ContentLifecycleStatus.Live
)
.Get().DistinctBy(x => x.Id).ToList();
但是当改用 App.WorkWith().Pages()
时,我收到一条错误消息,指出 PageNode 没有名为 "Tags" 的自定义字段。
An exception of type 'System.Exception' occurred in Telerik.Sitefinity.Model.dll but was not handled in user code
Additional information: Wrong custom field 'Tags' for type 'Telerik.Sitefinity.Pages.Model.PageNode'
有谁知道如何获取包含某些标签的页面列表?我正在使用 Sitefinity 8.1。
澄清一下,我没有向我的主页添加自定义标签字段。当我这样做时,我两次获得该字段:
所以 Sitefinity 似乎默认有一个 Tags 字段...
我假设您添加了一个名为 "Tags" 的自定义页面字段。
var pages = App.WorkWith().Pages()
.LocatedIn(PageLocation.Frontend)
.ThatArePublished()
.Where(p => p.GetValue<TrackedList<Guid>>("Tags").Any(tag => tagGuids.Contains(tag)))
.Get().ToList(); //ToList to commit to memory for iteration if needed
显然我的 Sitefinity 配置有误。一旦我删除了自制的自定义字段标签,它也删除了原来的标签。所以现在我只剩下一个,现在是一个自定义字段。完成此操作后,我可以使用原始问题中的代码访问标签...
希望我能解释一下,因为我花了很长时间才弄明白。