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

时间:2015-03-30 08:44:27

标签: umbraco umbraco7 umbraco-tags

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

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

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

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

3 个答案:

答案 0 :(得分:10)

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

要使用所有标签,

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

获取特定标记内容GetTaggedContentByTag()是公开的方法,

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

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

Source 礼貌:Jimbo Jones

答案 1 :(得分:6)

无需拨打标签服务。

在umbraco 7中你可以使用它:

var tags = Umbraco.TagQuery.GetAllTags();

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

你可以使用

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

获取您的数据

答案 2 :(得分: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>
}