kebie님의' 태터툴즈에서 태그 구름 사용하기' 트랙백

태그클라우드.png

태그목록 표시를 구현하기 위해 밤낮으로 삽질하던 중에 kebie님께 목말라하던 트랙백을 받았습니다. 태그기능을 거의 완벽하게 구현하셨더군요. 특히, 태그를 선택하면 관련된 태그만 출력되는 것은 너무도 훌륭합니다. 하던 작업을 때려치우고, kebie님의 소스를 바탕으로 표시되는 순서와, 하이라이트 등과 관련된 부분을 재가공하여 아래와 같이 적용하였습니다.

수정전

$sql = 'SELECT count(*), tag from t3_'.$dbid.'_tag'.$WHERE_COND.' GROUP BY tag ORDER BY tag asc';
$result = @mysql_query($sql);
while(list($pcnt, $tag) = @mysql_fetch_array($result)){
if($pcnt>8) $font='s4';
elseif($pcnt>3) $font='s3';
elseif($pcnt>1) $font='s2';
else $font='s1';
$tags_str .= '<a rel='tag' href='index.php?stag='.urlencode($tag).''><font class=''.$font.''>'.$tag.'</font></a> ';
}return $tags_str;
}

수정후

unset($p);
$sql = "select count(*), tag from t3_".$dbid."_tag".$WHERE_COND." group by tag order by no desc limit 0, 32";
$result = @mysql_query($sql);
while(list($pcnt, $tag) = @mysql_fetch_array($result)){
if($pcnt>8) $font='cloud1';
elseif($pcnt>5) $font='cloud2';
elseif($pcnt>3) $font='cloud3';
elseif($pcnt>1) $font='cloud4';
else $font='cloud5';

$p_rep = $GLOBALS["plugin"]->s_rcttag_rep;
$p_rep = str_replace("[##_rcttag_rep_tag_##]", "<a href=\"index.php?stag=".urlencode($tag)."\"><font class="".$font."">$tag</font></a>", $p_rep);
$p .= $p_rep;
}
return $p;
}

order by no desc - 최근에 작성한 포스트에 포함된 태그 순서로 표시
$pcnt - 중복되는 태그 수 1, 3, 5, 8 순으로 하이라이트 표시
limit 0, 32' - 최대 출력 수 32개로 재한(플러그인 환경설정에서 지정)
스킨의 Style.css에서 클라우드 색상 지정 가능 하도록 변경

※ 파란색 코드만 자신의 블로그에 맞게 수정하시면 됩니다. 플러그인화 하기위해 $p_rep를 정의하였습니다. 이 부분은 무시하셔도 무방합니다.

Style.css 태그 cloud 스타일
.cloud1 { font-size: 15px; color: #cc3300; font-family: "돋움"; letter-spacing:-1px;}
.cloud2 { font-size: 14px; color: #ff9900; font-family: "돋움"; letter-spacing:-1px;}
.cloud3 { font-size: 12px; color: #669900; letter-spacing:-1px;}
.cloud4 { font-size: 11px; color: #0099CC; font-family: "돋움";}
.cloud5 { font-size: 11px; color: #999999; font-family: "돋움";}

index.php 태그의 총 개수 출력하기
중복되지 않는 태그 수 구하기위해 index.php의 가장 하단 print $d1; 위에 파란색 코드를 삽입 후 skin.html의 적절한 위치에 [##_rcttag_rep_tag_count_##]치환자를 추가하시면 되겠습니다.

if (strpos($d1, "[##_rcttag_rep_tag_count_##]")) { // 태그 총 개수 출력
$sql = "select count(distinct tag) from t3_".$dbid."_tag;";
$result = mysql_query($sql);
while(list($tag) = mysql_fetch_array($result)){
$tag_count = $tag;
$d1 = str_replace("[##_rcttag_rep_tag_count_##]", "($tag_count)", $d1);
}
$d1 = str_replace("[##_rcttag_rep_tag_count_##]", "", $d1);
}

print $d1;

Comments

Got something to add? You can just leave a comment.

Your Reaction Time!

avatar

captcha