7

我使用GetTags()under 的方法umbraco.cms.businesslogic.Tags.Tag来获取组或节点下的所有标签。

var tags = umbraco.cms.businesslogic.Tags.Tag.GetTags("default");

但是umbraco.cms.businesslogic.Tags.Tag现在已经过时了,还有其他更好的选择吗?

此外,新库是否提供基于标签的节点查询?

4

3 回答 3

14

好的,所以 Umbraco 7 有了新的TagService库来处理标签。

要使用所有标签,

var service = UmbracoContext.Application.Services.TagService;
var blogTags = service.GetAllTags("default");

获取特定标签内容GetTaggedContentByTag()是暴露的方法,

var sports = service.TagService.GetTaggedContentByTag("Gaming");

它返回TaggedEntity列表和具有EntityId属性的TaggedEntity对象。

资料来源 :Jimbo Jones

于 2015-03-30T09:09:07.130 回答
7

无需调用标签服务。

在 umbraco 7 中,您可以使用它:

var tags = Umbraco.TagQuery.GetAllTags();

或者

var tags = Umbraco.TagQuery.GetAllTags(group);

你可以使用

var mycontents = Umbraco.TagQuery.GetContentByTag("mytag")

获取您的数据

于 2016-10-20T12:27:35.750 回答
1

我发现了 TagService 的限制,并使用以下内容从一组特定的节点中获取标签列表。仅按组查询标签对我不起作用。

var pages = parentpage.Children;   
var allNodesWithTags = pages.Where("tags != \"\"");

List<string> taglist = new List<string>();      
foreach (var node in allNodesWithTags)
{
    taglist.AddRange(node.tags.ToString().Split(','));
}

taglist = taglist.OrderBy(q => q).ToList();

然后从子节点输出标签列表很简单:

@foreach (string tag in taglist.Distinct())
{
    <li><a href="#" class="">@tag</a></li>
} 
于 2015-05-07T11:39:46.943 回答