Drupal 7 – Override the term path inside Tagadelic Tag Cloud

Implement tag cloud is easy in Drupal. You can find the module called Tagadelic in the my previous post.
Drupal 7 – Create a Tag Cloud with Tagadelic

But the term path inside the tag cloud is always fixed as default which is taxonomy/term/[tid]. I tried to override it by the Entity Path module but no luck. Luckily i find a workaround to override it. Actually Tagadelic is not just a simple Drupal module but also a API system. The following theme function theme_tagadelic_weighted() determines the term path in Tagadelic.

<?php
function <THEME>_tagadelic_weighted(array $vars) {
  $terms = $vars['terms'];
  $output = '';

  foreach ($terms as $term) {
    $output .= l($term->name, 'taxonomy/term/' . $term->tid, array(
      'attributes' => array(
        'class' => array("tagadelic", "level" . $term->weight),
        'rel' => 'tag',
        'title'  => $term->description,
        )
      )
    ) . " \n";
  }
  return $output;
}
?>

 

For example, i want to override a taxonomy term with machine name blog_tag so i added the following function in my theme template.php

function <THEME>_tagadelic_weighted(array $vars) {
  $terms = $vars['terms'];
  $output = '';

  if ($vars['voc']->machine_name == 'blog_tag') {
    // Override the path only if the vocabulary of the tag cloud is Blog Tag
    foreach ($terms as $term) {
      // The new path is a view page path with term id as argument input
      $output .= l($term->name, 'blog-tag-view/' . $term->tid,
        array(
          'attributes' => array(
            'class' => array("tagadelic", "level" . $term->weight),
            'rel' => 'tag',
            'title'  => $term->description,
          )
        )
      ) . " \n";
    }
  } else {
    // Default path for other vocabularies
    foreach ($terms as $term) {
      $output .= l($term->name, 'taxonomy/term/' . $term->tid,
        array(
          'attributes' => array(
            'class' => array("tagadelic", "level" . $term->weight),
            'rel' => 'tag',
            'title'  => $term->description,
          )
        )
      ) . " \n";
    }
  }
  return $output;
}

 

Done =)

Reference: Lullabot API – theme_tagadelic_weighted

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.