2010/05/16

PHPでタグクラウドを作る

はてななどで使われているタグクラウドを作ってみた。
ぶっちゃけPEARのライブラリに存在するんだけどねw
http://pear.php.net/manual/ja/package.html.html-tagcloud.php

ま、車輪の再開発がどうのうこうのって話もありますが、
そこから何かを得ることができれば無駄じゃないはず。

▼ソース
<?php
echo <<<HTML
<style>

ul.tagCloud {
    margin: 0;
    padding: 0.5em 10px;
    line-height: 1;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 13px;
}

ul.tagCloud li {
    margin: 0;
    padding: 0;
    display: inline;
    font-size: 100%; /* ここで相対的に文字サイズを変更 */
}

ul.tagCloud li a {
    text-decoration: none;
}

/* タグレベル1~6 */

ul.tagCloud li.level1 a {
    font-size: 167%;
    color: #db00aa;
    font-weight: bold;
}

ul.tagCloud li.level2 a {
    font-size: 136%;
    color: #e771b4;
    font-weight: bold;
}

ul.tagCloud li.level3 a {
    font-size: 122%;
    color: #bf79b5;
}

ul.tagCloud li.level4 a {
    font-size: 114%;
    color: #a57c9d;
}

ul.tagCloud li.level5 a {
    font-size: 92%;
    color: #897c9d;
}

ul.tagCloud li.level6 a {
    font-size: 77%;
    color: #567d9d;
}

/* オンマウス色 */
ul.tagCloud li a:hover {
    color: #000;
}

</style>
HTML;

class Keyword {

    private $keyword;
    private $url;
    private $class;

    public function Keyword($keyword, $url, $class) {
        $this->keyword = $keyword;
        $this->url = $url;
        $this->class = $class;
    }

    public function getKeyword() {
        return $this->keyword;
    }
    public function getUrl() {
        return $this->url;
    }
    public function getClass() {
        return $this->class;
    }
}

$keywordList[] = new Keyword('Zend Framework', 'http://yahoo.co.jp', 'level2');
$keywordList[] = new Keyword('CakePHP', 'http://yahoo.co.jp', 'level3');
$keywordList[] = new Keyword('symfony', 'http://yahoo.co.jp', 'level1');
$keywordList[] = new Keyword('Ethna', 'http://yahoo.co.jp', 'level6');
$keywordList[] = new Keyword('Mojavi', 'http://yahoo.co.jp', 'level3');
$keywordList[] = new Keyword('SilverStripe', 'http://yahoo.co.jp', 'level2');
$keywordList[] = new Keyword('Seagull', 'http://yahoo.co.jp', 'level6');
$keywordList[] = new Keyword('Joomla!', 'http://yahoo.co.jp', 'level1');
$keywordList[] = new Keyword('Midgard', 'http://yahoo.co.jp', 'level4');

echo "<div style=border: 1px; solid red; width:500px;>";
echo "<ul class=\"tagCloud\">";
foreach ($keywordList as $keyword) {
    echo "<li class='" . $keyword->getClass()  . "'><a href =" . $keyword->getUrl() .">" .$keyword->getKeyword() ."</a></li>";
}
echo "</ul>";
echo "</div>";

▼実行結果





0 件のコメント:

コメントを投稿