본문 바로가기
프로그래밍/PHP

PHP : PEAR : HTML_TagCloud

by 베리베리 2008. 8. 12.

http://breakpoint.tistory.com/149


HTML_TagCloud


PEAR 에 공개된 HTML_TagCloud 를 사용한 태그클라우드 소개 및 사용법 번역.

URL : http://pear.php.net/package/HTML_TagCloud

  1. 개요

    이 패키지는 태그클라우드를 HTMLCSS 으로 작성.
    태그클라우드란 태그 또는 키워드를 리스트로 형식으로 표현한 것으로 해당 페이지 / 블로그내에서 나타나는 빈도에따라 폰트사이즈가 달라진다. 

    위키피디아에 올라온 한국어 설명에서는 태그구름이라는 이름이네..-,.-
    http://ko.wikipedia.org/wiki/%ED%83%9C%EA%B7%B8_%EA%B5%AC%EB%A6%84

    이 패키지는 빈도 및 시간경과정보도 표시가능하다. 신착 태그는 짙은 색으로 오래된 태그는 옅은 색으로 표시.

    인스톨방법은 위 URL 을 참조해서 설치하기.

  2. 사용 예
    <?php
    require_once 'HTML/TagCloud.php'
    ;

    $tags = new HTML_TagCloud
    ();
    // 요소(엘리먼트)추가
    $tags->addElement('PHP'       ,'http://www.php.net'  , 39, strtotime('-1 day'
    ));
    $tags->addElement('XML'       ,'http://www.xml.org'  , 21, strtotime('-2 week'
    ));
    $tags->addElement('Perl'      ,'http://www.xml.org'  , 15, strtotime('-1 month'
    ));
    $tags->addElement('PEAR'      ,'http://pear.php.net' , 32, time
    ());
    $tags->addElement('MySQL'     ,'http://www.mysql.com', 10, strtotime('-2 day'
    ));
    $tags->addElement('PostgreSQL','http://pgsql.com'    ,  6, strtotime('-3 week'
    ));
    // HTML 및 CSS 출력

    print $tags->buildALL
    ();
    ?>


  3. HTML과 CSS 를 별도 생성
    HTML_TagCloud 는 HTML 과  CSS 를 출력한다.  HTML 는 단순 리스트이며 CSS 로 꾸민다. HTML 과  CSS 는 별도로 출력할 수 있다.

    <?php
    // CSS 만 출력
    $css = $tags->buildCSS
    ();
    // html 만 출력
    $taghtml = $tags->buildHTML
    ();
    ?>

    HTML 의 출력은 addElement() 로 추가된 태그데이터에 의존한다.  그러나 CSS 의 출력은 고정되어 있다. 이 패키지의 CSS 출력을 정적으로 사용할 수 있다.

  4. 태그 장식의 수정
    CSS 에서 사용하는 색을 변경할 수 있다.  HTML_TagCloud 를 상속받은 클래스를 작성하여 색 , 사이즈프로퍼티를 오버라이드한다.

    <?php
    class MyTags extends
    HTML_TagCloud
    {
        protected
    $epocLevel
    = array(
            array(
               
    'earliest'
    => array(
                   
    'link'    => 'ffdfdf'
    ,
                   
    'visited' => 'ffdfdf'
    ,
                   
    'hover'   => 'ffdfdf'
    ,
                   
    'active'  => 'ffdfdf'
    ,
                ),
            ),
            array(
               
    'earlier'
    => array(
                   
    'link'    => 'ff7f7f'
    ,
                   
    'visited' => 'ff7f7f'
    ,
                   
    'hover'   => 'ff7f7f'
    ,
                   
    'active'  => 'ff7f7f',
                 ),         
            ),        
            array(
                
    'previous'
    => array(
                   
    'link'    => 'ff7f7f'
    ,
                   
    'visited' => 'ff7f7f'
    ,
                   
    'hover'   => 'ff7f7f'
    ,
                   
    'active'  => 'ff7f7f'
    ,
                ),
            ),
            array(
               
    'recent'
    => array(
                   
    'link'    => 'ff4f4f'
    ,
                   
    'visited' => 'ff4f4f'
    ,
                   
    'hover'   => 'ff4f4f'
    ,
                   
    'active'  => 'ff4f4f'
    ,
                ),
            ),
            array(
               
    'later'
    => array(
                   
    'link'    => 'ff1f1f'
    ,
                   
    'visited' => 'ff1f1f'
    ,
                   
    'hover'   => 'ff1f1f'
    ,
                   
    'active'  => 'ff1f1f'
    ,
                ),
            ),
            array(
               
    'latest'
    => array(
                   
    'link'    => 'ff0000'
    ,
                   
    'visited' => 'ff0000'
    ,
                   
    'hover'   => 'ff0000'
    ,
                   
    'active'  => 'ff0000'
    ,
                ),
            ),
        );
        protected
    $size_suffix = 'pt'
    ;
        protected
    $fontsizerange = 0
    ;
        protected
    $basefontsize = 12
    ;
    }
    ?>
  5. 시간정보 생략
    시간경과에 따른 색 변경 기능을 생략할 경우 addElement() 의 네번째 파라미터를 생략한다.
    이 파라미터를 생략하면 현재 시각이 적용된다.

    <?php
    $tags
    ->addElement('PHP','http://www.php.net', 39
    );
    ?>

관련링크 : http://pear.php.net/package/HTML_TagCloud

관련 글 : 태그클라우드

댓글