versionFrom | versionTo | meta.Title | meta.Description |
---|---|---|---|
9.0.0 |
10.0.0 |
Umbraco Tag Query |
Working with tags in Umbraco |
The ITagQuery
interface is your primary way to work with tags in Umbraco, the interface allows you to get the various tags like content tags and media tags, as well as getting content by tag, for instance getting all content nodes with the "Umbraco" tag.
If you're using it in Views or Partial views you can inject ITagQuery
using the @inject
keyword, for example
@inject ITagQuery _tagQuery;
After this you can use _tagQuery
to access the ITagQuery
.
If you're using it in controllers, you can inject it into the constructor like so:
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using Umbraco.Cms.Core.PublishedCache;
using Umbraco.Cms.Web.Common.Controllers;
namespace UmbracoHelperDocs.Controllers
{
[Route("tags/[action]")]
public class TagApiController : UmbracoApiController
{
private readonly ITagQuery _tagQuery;
public TagApiController(ITagQuery tagQuery)
{
_tagQuery = tagQuery;
}
public ActionResult<IEnumerable<string>> GetMediaTags()
{
return _tagQuery.GetAllMediaTags().Select(tag => tag.Text).ToList();
}
}
}
:::warning
ITagQuery
is a scoped service, meaning that it should only be injected into scoped or transient services, for more information see the official Microsoft Documentation
:::
All examples are from a view using the injection shown above, but working with tags in controllers will be the same.
Get a collection of tags used by content items on the site, you can optionally pass in a group name to only list tags belonging to a specific tag group
@{
var allContentTags = _tagQuery.GetAllContentTags();
var newsContentTags = _tagQuery.GetAllContentTags("news");
}
Get a collection of tags used by media items on the site, you can optionally pass in a group name to only list tags belonging to a specific tag group
@{
var allMediaTags = _tagQuery.GetAllMediaTags();
var newsMediaTags = _tagQuery.GetAllMediaTags("news");
}
Get a collection of tags used by members on the site, you can optionally pass in a group name to only list tags belonging to a specific tag group
@{
var allMemberTags = _tagQuery.GetAllMemberTags();
var newsMemberTags = _tagQuery.GetAllMemberTags("news");
}
Get a collection of tags used on the site, you can optionally pass in a group name to only list tags belonging to a specific tag group
@{
var allTags = _tagQuery.GetAllTags();
var allNewsTags = _tagQuery.GetAllTags("news");
}
Get a collection of IPublishedContent by tag, and you can optionally filter by tag group as well
@{
var taggedContent = _tagQuery.GetContentByTag("News");
}
Get a collection of IPublishedContent by tag group
@{
var taggedContent = _tagQuery.GetContentByTagGroup("BlogTags");
}
Get a collection of Media by tag, and you can optionally filter by tag group as well
@{
var taggedMedia = _tagQuery.GetMediaByTag("BlogTag");
}
Get a collection of Media by tag group
@{
var mediaByTagGroup = _tagQuery.GetMediaByTagGroup("BlogTags");
}
Get a collection of tags by entity id (queries content, media and members), and you can optionally filter by tag group as well
@{
var tagsForEntity = _tagQuery.GetTagsForEntity(1234);
}
Get a collection of tags assigned to a property of an entity (queries content, media and members), and you can optionally filter by tag group as well
@{
var propertyTags = _tagQuery.GetTagsForProperty(1234, "propertyTypeAlias");
}