在Sitefinity中查找包含特定标签的网页

时间:2015-08-20 11:21:04

标签: tags sitefinity sitefinity-8

我正在寻找一种方法来查找包含某些标签的所有网页。对于文档,我可以这样做:

// 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没有名为&#34;标签&#34;的自定义字段。

  

类型&#39; System.Exception&#39;的例外情况发生在   Telerik.Sitefinity.Model.dll但未在用户代码中处理

     

其他信息:错误的自定义字段&#39;标记&#39;对于类型   &#39; Telerik.Sitefinity.Pages.Model.PageNode&#39;

有谁知道如何获取包含某些标签的网页列表?我使用的是Sitefinity 8.1。

澄清我没有在我的页面中添加自定义标签字段。当我这样做时,我得到了两次: tags field showing twice

所以Sitefinity默认似乎有一个标签字段......

2 个答案:

答案 0 :(得分:1)

我假设你添加了一个名为&#34; Tags&#34;的自定义页面字段。

Custom Page Field "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

答案 1 :(得分:0)

显然我有一个配置错误的Sitefinity。一旦我删除了自制自定义字段标签,它也删除了原始标签。所以现在我只剩下一个,现在是一个自定义字段。完成后,我可以使用原始问题中的代码访问标签...

希望我能解释一下,因为我花了很长时间来弄明白这一点。