lib/acts_as_taggable_helper.rb
def tag_cloud(options = {})
    options.assert_valid_keys(:limit, :conditions, :sort)
    options.reverse_merge! :limit => 100, :sort => :name
    sort = options.delete(:sort)

    tags = Tag.find(:all, options.merge(:order => 'taggings_count DESC')).sort_by(&:sort)

    # TODO: add option to specify which classes you want and overide this if you want?
    classes = %w(popular v-popular vv-popular vvv-popular vvvv-popular)

    max, min = 0, 0
    tags.each do |tag|
      max = tag.taggings_count if tag.taggings_count > max
      min = tag.taggings_count if tag.taggings_count < min
    end

    divisor = ((max - min) / classes.size) + 1

    html =    %(<div class="hTagcloud">\n)
    html <<   %(  <ul class="popularity">\n)
    tags.each do |tag|
      html << %(    <li>)
      html << link_to(tag.name, tag_url(tag), :class => classes[(tag.taggings_count - min) / divisor])
      html << %(</li> \n)
    end
    html <<   %(  </ul>\n)
    html <<   %(</div>\n)
  end
# Generate a tag cloud of the top 100 tags by usage, uses the proposed hTagcloud microformat.
#
# Inspired by http://www.juixe.com/techknow/index.php/2006/07/15/acts-as-taggable-tag-cloud/
Generate a tag cloud of the top 100 tags by usage, uses the proposed hTagcloud microformat.
Generate a tag cloud of the top 100 tags by usage uses the proposed hTagcloud microformat .
def tag_cloud(options = {})
    options.assert_valid_keys(:limit, :conditions, :sort)
    options.reverse_merge! :limit => 100, :sort => :name
    sort = options.delete(:sort)
    tags = Tag.find(:all, options.merge(:order => 'taggings_count DESC')).sort_by(&:sort)
    classes = %w(popular v-popular vv-popular vvv-popular vvvv-popular)
    max, min = 0, 0
    tags.each do |tag|
      max = tag.taggings_count if tag.taggings_count > max
      min = tag.taggings_count if tag.taggings_count < min
    end
    divisor = ((max - min) / classes.size) + 1
    html =    %(<div class="hTagcloud">\n)
    html <<   %(  <ul class="popularity">\n)
    tags.each do |tag|
      html << %(    <li>)
      html << link_to(tag.name, tag_url(tag), :class => classes[(tag.taggings_count - min) / divisor])
      html << %(</li> \n)
    end
    html <<   %(  </ul>\n)
    html <<   %(</div>\n)
  end
def tag_cloud ( options = { } ) options . assert_valid_keys ( :limit , :conditions , :sort ) options . reverse_merge! :limit => 100 , :sort => :name sort = options . delete ( :sort ) tags = Tag . find ( :all , options . merge ( :order => 'taggings_count DESC' ) ) . sort_by ( & :sort ) classes = %w( popular v-popular vv-popular vvv-popular vvvv-popular ) max , min = 0 , 0 tags . each do | tag | max = tag . taggings_count if tag . taggings_count > max min = tag . taggings_count if tag . taggings_count < min end divisor = ( ( max - min ) / classes . size ) + 1 html = %(<div class="hTagcloud">\n) html << %(  <ul class="popularity">\n) tags . each do | tag | html << %(    <li>) html << link_to ( tag . name , tag_url ( tag ) , :class => classes [ ( tag . taggings_count - min ) / divisor ] ) html << %(</li> \n) end html << %(  </ul>\n) html << %(</div>\n) end
Generate a tag cloud of the top 100 tags by usage, uses the proposed hTagcloud microformat.
Generate a tag cloud of the top 100 tags by usage uses the proposed hTagcloud microformat .
# TODO: add option to specify which classes you want and overide this if you want?
options