ラベル tag-cloud の投稿を表示しています。 すべての投稿を表示
ラベル tag-cloud の投稿を表示しています。 すべての投稿を表示

2009年8月28日金曜日

Railsでタグクラウド

いくつかプラグインがあるが、acts_as_taggable_on_steroidsが一番人気のようだ。

acts_as_taggable_on_steroidsの使い方は、acts_as_taggable_on_steroidsの使い方まとめ - ひげろぐが参考になる。

acts_as_taggable_on_steroidsのインストール元については、Railsのtagプラグイン「acts_as_taggable_on_steroids」がgithubに行ってた - 常識という迷信にあるとおり、現在はgithubにあるのが最新のようだ。



上記の参考サイトではacts_as_taggable_on_steroidsの機能をフルに使っているが、タグクラウドを表示したいだけなら下記だけでOK。

  1. acts_as_taggable_on_steroidsをインストール
  2. タグのモデルを用意する(既存のモデルでもcountと表示用の文字列(下記の例ではlabel)さえあればOK)
    # tag_sample.rb
    class TagSample
     attr_accessor :count, :label
    end
  3. 上記のモデルにデータをセットした配列を用意
    # FooController.rb
    # 実際にはDBから取得したデータとかをループで処理するだろうけど
    tag1 = TagSample.new

    tag1.count = 10

    tag1.label = "ラベル1"
    tag2 = TagSample.new

    tag2.count = 20

    tag2.label = "ラベル2"
    @tags = [tag1, tag2]

  4. ヘルパーでTagsHelperをインクルードする
    # foo_helper.rb
    module FooHelper
    include TagsHelper
    end
  5. ビューでタグクラウドを表示(第2引数のCSSクラスの数は増減OK)
    <!-- foo/bar.html.erb -->
    <% tag_cloud(@tags, ["tag-s", "tag-m", "tag-l"]) do |tag, css| %>
     <%= link_to(h(tag.label), {:action=> :tags, :id => tag.label}, :class => css) %>
    <% end %>
  6. CSSで見た目を調整
    a.tag-s { font-size: 80%; }
    a.tag-l { font-size: 150%; }

2008年11月8日土曜日

PHPで簡単にタグクラウドを生成するPEAR::HTML_TagCloudを試してみた

PEAR :: Manual :: HTML_TagCloud

これは簡単。とても簡単。便利。
タグを追加してbuildするだけ => PEAR :: Manual :: 導入


デフォルトだとタグの色がグレー等になるようなので、サイトに合わせて色を変えた方が良さそう。
普通のリンクの色(デフォルト 青、visited 紫、active 赤)にしたい場合はこんな感じ。
CSS

div.tagcloud a{
 /* 下線は消した方がタグクラウドっぽい */
 text-decoration: none;
}
PHP
<?php
$tags = array(.....); //ここにタグと件数が入っているとする

require_once('HTML/TagCloud.php');

$cloud = new HTML_TagCloud();
foreach ($tags as $tag => $count) {
 //経過時間をセットしない場合の例
 $cloud->addElement($tag, '/tag/' . urlencode($tag), $count);
}
echo $cloud->buildHTML(); //HTMLのみ出力する

ブログ アーカイブ

tags