Umbraco-获取节点/组中使用的所有标记

Umbraco-获取节点/组中使用的所有标记,umbraco,umbraco7,umbraco-tags,Umbraco,Umbraco7,Umbraco Tags,我使用了umbraco.cms.businesslogic.Tags.Tag下的GetTags()方法来获取组或节点下的所有标记 var tags = umbraco.cms.businesslogic.Tags.Tag.GetTags("default"); 但是随着umbraco.cms.businesslogic.Tags.Tag现在已经过时,还有其他更好的选择吗 另外,新库是否提供基于标记的节点查询?好的,因此Umbraco 7有新的库来处理标记 要使用所有标签 var service

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

var tags = umbraco.cms.businesslogic.Tags.Tag.GetTags("default");
但是随着
umbraco.cms.businesslogic.Tags.Tag现在已经过时,还有其他更好的选择吗


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

好的,因此Umbraco 7有新的库来处理标记

要使用所有标签

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

要获取特定的标记内容,方法是否公开

var sports = service.TagService.GetTaggedContentByTag("Gaming");
它返回具有EntityId属性的TaggedEntity列表和TaggedEntity对象


礼貌:Jimbo Jones

我发现了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();
var pages=parentpage.Children;
var allNodesWithTags=pages.Where(“tags!=\”\”);
List taglist=新列表();
foreach(AllNodeWithTags中的var节点)
{
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>
} 
@foreach(taglist.Distinct()中的字符串标记)
{
  • }
    无需呼叫标签服务

    在umbraco 7中,您可以使用:

    var tags = Umbraco.TagQuery.GetAllTags();
    

    你可以用

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

    要获取您的数据

    查看新的标记服务也很有用:您应该使用Umbraco Helper for frontend,服务不使用缓存,直接查询数据库。。
    var mycontents = Umbraco.TagQuery.GetContentByTag("mytag")