Tag Cloud

4 posts by 2 authors in: Forums > CMS Builder
Last Post: October 28, 2011   (RSS)

By ryanGT - October 27, 2011

Hi all,

i was just wondering how i would go about creating a tag cloud from one field across multiple tables?

I have two tables called Reviews and Features, both of which have a text field called page_keywords. I would really like to use the information in these fields to create a tag cloud.

I have tried a few things but to no avail, (including left join, and array merge) im sure that the php explode function will have to be involved somewhere, but everything i try doenst seem to work.

I think that array merge is the correct way to go, and would really appreciate some help.

Many thanks

Re: [ryanGT] Tag Cloud

By Jason - October 27, 2011

Hi,

There are a number of different method for creating tag clouds. However, you first need to get an array of all of your "tags" along with a count of how frequently they occur.

In this example, you first create an array of all the sections you want to use and which field in each you tags are stored in. This script assumes that the tags in each field are separated by commas. It is also assumed that you are using CMSB version 2.08 or greater:

$tagsToCount = array();
$sectionsToField = array('reviews' => 'page_keywords', 'features' => 'page_keywords');

foreach($sectionsToField as $sectionName => $fieldName) {

//get section records
$records = mysql_select($sectionname);

foreach ($records as $record) {
//turn field into an array of values
$tags = explode(",", @$record[$fieldName]);

// add tags to the count array
foreach ($tags as $tag) {
$tag = trim($tag);
if (!$tag) { continue; } // skip empty array values

if (array_key_exists($tag, $tagsToCount)) {
$tagsToCount[$tag]++;
}
else {
$tagsToCount[$tag] = 0;
}
}

}

}


At the end of this code, you'll have an array called $tagsToCount where the index of an array element is the tag and the value is the number of times it appeared.

At the end of this you can use this code:
showme($tagsToCount);
to view the structure of the array.

Hope this helps get you started.
---------------------------------------------------
Jason Sauchuk - Project Manager
interactivetools.com

Hire me! Save time by getting our experts to help with your project.
http://www.interactivetools.com/consulting/

Re: [Jason] Tag Cloud

By ryanGT - October 28, 2011

Hi Jason,

Thats exactly what i need, but instead of counting duplicates could the function remove duplicate values?

Also i am struggling with extracting the tags from the array, no matter what i do i seem to always just get the numerical values out of the array, needless to say php coding is not my strongest area.

Also when returning the results it would be really good to have the functionality to limit the number of results and display them in a random order.

Again your help would be greatly appreciated.

Many thanks

Ryan