Learn More





DNN Community Blog

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.

Content, MetaData and Taxonomy – 1 – Taxonomy Manager

This article is cross-posted from my personal blog.

In DotNetNuke version 5.3, we introduced the concept of a centralized Content store, together with the ability to apply Taxonomies (categories) to the content.  We have extended this in DNN 5.4 by completing the MetaData API as well as adding Folksonomy (user tags).

In this series of blogs I will explain how developers can take advantage of these new features in their own extensions.

But first lets take a look at how the pieces work together.

Defining Taxonomies

Taxonomy is defined as “the practice and science of classification” – Wikipedia, while Folksonomy is defined as “collaborative tagging” – Wikipedia

Usually, taxonomy refers to the practice of using hierarchical categories applied to the content by a “content editor”, while folksonomy refers to the practice of free-form tagging of content by users. 

In DotNetNuke, while we expose both of these at the presentation layer, in the API and Data Layer they are implemented using a common data structure.

Lets take a look at the new Taxonomy Manager, which can be found on the Admin menu.

Figure 1: The Taxonomy Manager in DNN 5.4


The initial view displays a list of the defined Vocabularies – In DNN 5.3 the list is empty, while in DNN 5.4 there is a single System Vocabulary defined called Tags.

To create a new Vocabulary click on the Create New Vocabulary button.

Figure 2: Creating a New Vocabulary


You can then enter a name and description for the Vocabulary and define whether it is a Simple or Hierarchical Vocabulary and whether it is an Application scope Vocabulary (host users only) or Portal scope Vocabulary.

Once you have added the Vocabulary you will return to the main Vocabulary list.  To add “terms” to the Vocabulary select the Edit link.

Figure 3: Editing a Vocabulary


You can add “terms” to the Vocabulary by selecting the “Add Term” button.

Figure 4: Adding a Term to the Vocabulary


You can then enter a name and a description for the term and click Save.

To edit an existing term you can select the term from the Terms list.

Figure 5: Editing a Term in a Hierarchical Vocabulary


Note figure 5 shows a hierarchical Vocabulary, where the terms are displayed in a treeview, and you can define a Parent Term for the term,  while Figure 6 shows a simple (flat) Vocabulary of colors where the terms are displayed in a list, and there is no Parent Term option.

Figure 6: Editing a Term in a Simple Vocabulary



Using Taxonomies

Now we have defined a couple of Vocabularies, how do we use them.  Currently only two types of Content exists which can be “tagged” – Modules and Pages/Tabs.  By providing support for tagging at the Page and Module level through Page Settings and Module Settings, modules do not need to be updated to support taxonomies.  Modules, like Blog, Forum and Announcements which have multiple Content Items will need to be updated to support tagging at the item level though.

In figure 7 we can see how the terms “MP3 Players” from the Electronics Vocabulary and “Red” from the Colors Vocabulary can be applied to the Page.

Figure 7: Applying Taxonomy Terms (Categories) to a Page


Once the page has been categorized with some terms, if the page skin has the new Tags Skin object in it (like the base Index skin in Minimal Extropy), the skin object will display the list of categories that have been applied to the page.  (Note the skin object can be styled in many different ways though css.  In this case we are using a folder icon to indicate “categories” and a luggage label to indicate tags.

Figure 8: The new Tags Skin object



Adding Tags (Folksonomy)

Folksonomy is the practice of allowing users to enter their own tags in order to categorise or “tag” the content.  The Tags skin object has a property/attribute – AllowTagging – which defaults to true that allows users to enter their own tags.  The user, would click the Add Tags button.

Figure 9: Entering new Tags


The user could then enter a comma-delimited list of tags – click Save and the “Tags” would be saved (Figure 10)

Figure 10: The Tags Skin Object with Two New User-entered Tags



Tags System Vocabulary

It was briefly mentioned at the beginning of this article that there is a single System Vocabulary created when DNN 5.4 is installed.  This Vocabulary is where the User entered Tags are stored.

Figure 11: The Tags System Vocabulary


There are a number of advantages of using a special System Vocabulary for storing user entered tags.  One is that both taxonomy terms and folksonomy tags are treated in the API and Data Layer in the same way.  This means that we only have to manage one relationship between content and terms rather than two separate relationships.  The second benefit of treating tags in this way is that an admin can “manage” the tags – ie remove any offensive or inappropriate tags, or correct spellings of tags, by using the Taxonomy Manager UI.

I hope this has given you an idea of what the new Taxonomy/Folksonomy features can do.  In future blogs I will take a deep-dive into the API and Data Layer of this new sub-system and show you how you can build rich content driven modules.


tale huy
Hi, Charles

Thank you for your article.
I'm working on dnn7.3.3 and i can't add 2 terms "Electronics" and "Televisions" into the "Electronics" Vocabulary.
So, can you help me?

Many thanks and best regards.
Huy Ta
tale huy Wednesday, February 04, 2015 10:53 PM (link)

Comment Form

Only registered users may post comments.


2sic Daniel Mettler (125)
Aderson Oliveira (15)
Alec Whittington (11)
Alex Shirley (10)
Andrew Nurse (30)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (22)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (203)
Chris Paterra (55)
Clinton Patterson (28)
Cuong Dang (21)
Daniel Bartholomew (2)
Dave Buckner (2)
David Poindexter (3)
David Rodriguez (2)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (74)
Geoff Barlow (6)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (270)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matthias Schlomann (15)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Mike Horton (19)
Mitchel Sellers (28)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Peter Donker (52)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott S (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Timo Breumelhof (24)
Tony Henrich (3)
Torsten Weggen (2)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (37)
Will Strohl (163)
William Severance (5)
Try Evoq
For Free
Start Free Trial
a Demo
See Evoq Live
Need More Information?