我在GetTags()
下使用umbraco.cms.businesslogic.Tags.Tag
方法获取组或节点下的所有标记。
var tags = umbraco.cms.businesslogic.Tags.Tag.GetTags("default");
但是现在umbraco.cms.businesslogic.Tags.Tag
已经过时了,还有其他更好的选择吗?
此外,新库是否提供基于标签的节点查询?
答案 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>
}