Remove a taxon from the associated content item

To remove the taxon from the content items, you need to perform the following:

  1. Use TaxonomyManager, which is the manager class for taxonomies.
  2. Use ContentManager, which is the manager class for content. 
    The sample uses the ContentManager class as an example, but you can use it for all content types, including dynamic content.
  3. Query the category as a HierarchicalTaxon.
  4. Query the content items associated with the category.
  5. Iterate through the content items and remove the taxon.
    Use the organizer’s RemoveTaxon method. To remove multiple taxons or taxa, you can use the RemoveTaxa method instead.
  6. Call the manager’s SaveChanges method to persist the changes to the database.

Consider the complete code snippet:

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Telerik.Sitefinity.Modules.GenericContent;
using Telerik.Sitefinity.Taxonomies;
using Telerik.Sitefinity.Taxonomies.Model;
using Telerik.Sitefinity.Model;

namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Taxonomies.Tutorials
{
   public partial class TaxonomiesTutorialsSnippets
   {
       public static void RemoveContentItemsForTaxon(string name)
       {
           var taxonomyManager = TaxonomyManager.GetManager();

           var contentManager = ContentManager.GetManager();

           //Get the taxon

           var taxon = taxonomyManager.GetTaxa<HierarchicalTaxon>().FirstOrDefault(s => s.Title == name);

           if (taxon == null) return;

           //Get all content items associated with the category

           var contentItems = contentManager.GetContent().Where(c => c.GetValue<IList<Guid>>("Category").Contains(taxon.Id));

           //Loop through the content items and remove the Taxon

           foreach (var contentItem in contentItems)
           {
               contentItem.Organizer.RemoveTaxa("Category", new[] { taxon.Id });
           }

           contentManager.SaveChanges();
       }
   }
}

NOTE: UrlNameCharsToReplaceand UrlNameReplaceStringare two constants that you will need to define as follows:

  • public const string UrlNameCharsToReplace = @"[^\w\-\!\$\'\(\)\=\@\d_]+";
  • public const string UrlNameReplaceString = "-";
Want to learn more?
Enhance your Sitefinity skills by enrolling in free training sessions. Become Sitefinity certified through Progress Education Community to strengthen your professional credentials.
New to Sitefinity?