Documentation Center

Building tag clouds

A tag cloud is a visual depiction of tags, or simply the word content of a site, used typically to describe the content of a Web site.

Tags are usually single words typically listed alphabetically and the importance of a tag is shown with font size or color. Therefore, visitor's can find a tag by alphabet or popularity. The tags are usually hyperlinks that lead to a collection of items that are associated with a tag.

A more complex example is the building a tag cloud around a piece of content by retrieving Keywords one level up and down.

ASP.NET
The following is an example of the ASP.NET implementation:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Tridion.ContentDelivery.Taxonomies;
using Tridion.ContentDelivery.DynamicContent.Query;
using Tridion.ContentDelivery.DynamicContent;

namespace testtax_net
{
	public partial class features : System.Web.UI.Page
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			CompositeFilter tagCloudFilter = new CompositeFilter();
			tagCloudFilter.DepthFiltering(1, DepthFilter.FilterUp);
			tagCloudFilter.DepthFiltering(1, DepthFilter.FilterDown);

			String[] componentURIS = new String[] { "tcm:12-40-16", "tcm:12-41-16", "tcm:12-42-16" };


			TaxonomyRelationManager relationManager = new TaxonomyRelationManager();
			TaxonomyFactory taxFactory = new TaxonomyFactory();

			String[] contextKeywordURIs = { "tcm:12-70-1024", "tcm:12-68-1024", "tcm:12-80-1024" };
			Keyword[] contextKeywordArray = new Keyword[contextKeywordURIs.Length];


			for (int i = 0; i < contextKeywordURIs.Length; i++)
			{
				contextKeywordArray[i] = taxFactory.GetTaxonomyKeyword(contextKeywordURIs[i]);

			}
			Keyword[] cloudFacets = relationManager.GetTaxonomyKeywords("tcm:12-900-512", componentURIS, contextKeywordArray, tagCloudFilter, 16);

			for(int i = 0; i < cloudFacets.GetLength(0); i++)
			{

				int fontSize = 11 + (cloudFacets[i].ReferencedContentCount * 2);
				Response.Write("<a class = 'big' style='white-space: nowrap; font-size: " + fontSize + " px;' href= 'index.jsp?Keyword=" + cloudFacets[i].KeywordUri + "'> ");
				Response.Write(cloudFacets[i].KeywordName + "</a>");
				if (i%2==0 ) Response.Write("<br/>");
			}

		}
	}
}
Java
The following is an example of the Java implementation:
<%@ page language="java" contentType="text/html"%>
<%@page import="com.tridion.broker.querying.Query"%>
<%@page import="com.tridion.broker.querying.criteria.Criteria"%>
<%@page import="com.tridion.broker.querying.criteria.operators.AndCriteria"%>
<%@page import="com.tridion.broker.querying.criteria.content.PublicationCriteria"%>
<%@page import="com.tridion.broker.querying.criteria.taxonomy.TaxonomyKeywordCriteria"%>
<%@page import="com.tridion.dcp.ComponentPresentationFactory"%>
<%@page import="com.tridion.dcp.ComponentPresentation,
com.tridion.broker.componentpresentations.meta.*,
com.tridion.broker.components.meta.*,
com.tridion.broker.querying.filter.LimitFilter,
com.tridion.broker.querying.*,
com.tridion.taxonomies.*,
com.tridion.meta.*,
com.tridion.taxonomies.filters.*,
java.util.*,
java.util.Iterator,
com.tridion.dcp.filters.sorting.*"%>
<%@ taglib uri="http://www.sdl.com/delivery/tags/cd/2.0" prefix="tridion" %>

<% 
CompositeFilter tagCloudFilter = new CompositeFilter();
tagCloudFilter.depthFiltering(1, DepthFilter.FILTER_UP);
tagCloudFilter.depthFiltering(1, DepthFilter.FILTER_DOWN);

String[] componentURIS = new String[] { "tcm:12-40-16", "tcm:12-41-16", "tcm:12-42-16" };


TaxonomyRelationManager relationManager = new TaxonomyRelationManager();
TaxonomyFactory taxFactory = new TaxonomyFactory();

String[] contextKeywordURIs = { "tcm:12-70-1024", "tcm:12-68-1024", "tcm:12-80-1024" };
Keyword[] contextKeywordArray = new Keyword[contextKeywordURIs.length];

for (int i = 0; i < contextKeywordURIs.length; i++)
{
	contextKeywordArray[i] = taxFactory.getTaxonomyKeyword(contextKeywordURIs[i]);
}
Keyword[] cloudFacets = relationManager.getTaxonomyKeywords("tcm:12-900-512", componentURIS, contextKeywordArray, tagCloudFilter, 16);

for(int i = 0; i < cloudFacets.length; i++)
{
	int fontSize = 11 + (cloudFacets[i].getReferencedContentCount() * 2);
	System.out.println("<a class = 'big' style='white-space: nowrap; font-size: " + fontSize);
	System.out.println("px;' href= 'index.jsp?Keyword=" + cloudFacets[i].getKeywordURI()+ "'> ");
	System.out.println(cloudFacets[i].getKeywordName() + "</a>");
	if (i%2==0 )System.out.println("<br/>");
}

%>