카테고리(분류)별 몇개의 글이 있는지 카테고리 갯수 표시기능(수정) > 그누3 팁자료실

그누3 팁자료실

카테고리(분류)별 몇개의 글이 있는지 카테고리 갯수 표시기능(수정) 정보

카테고리(분류)별 몇개의 글이 있는지 카테고리 갯수 표시기능(수정)

본문

리스트에서 selec로 된 카테고리(분류)를 한줄로 처리한후
카테고리(분류)에 새로운 글있는지 표시기능 추가
카테고리(분류)별 몇개의 글이 있는지 카테고리 갯수 표시기능 추가

설치나 사용법은 다음 링크를 참조하십시오
* "리스트에서 selec로 된 카테고리(분류)를 한줄로 처리하도록...."
http://sir.kr/g3_tiptech/1185
* "카테고리(분류)별 새로운글 표시기능"
http://sir.kr/g3_tiptech/1213

위 링크의 팁 사용자는 아래의 "function get_category_list($table,$loc)" 함수 부분에 변경된것만 적용하시면 됩니다.

그리고 참고로 아래의 소스는 위의 두번째 링크의 소스에서 수정된 것입니다.

ps. 코멘트에서 처음처럼님과 파란장미님께서 지적하신 빈카테고리가 있을때 갯수가 밀려서 표시되는 문제를 수정적용하였습니다.

1. lib/developer.lib.php에 다음 내용을 추가한다.
function new_list_category($table, $ca_id)
{
    $sql  = " select wr_datetime from $table";
    if($ca_id != "all") $sql .= " where ca_id = $ca_id ";
    $sql .= " order by wr_datetime desc limit 1";

    $row = mysql_fetch_array(mysql_query($sql));

    if (!$row) return 0;    // 조회된 값이 없을 경우

    if($row[wr_datetime] >= date("Y-m-d H:i:s", time() - 24 * 3600))
        return 1;
    else
        return 0;
}

function get_category_list($table,$loc)
{
    global $stext;

    $sql = " select * from {$table}_cat order by ca_id ";
    $result = sql_query($sql);

    $sql_cnt = " select count(ca_id) as cnt, ca_id from {$table} where wr_comment=0 group by ca_id ";
    $result_cnt = sql_query($sql_cnt);
    while ($row_cnt = mysql_fetch_array($result_cnt))
    {
        $array_cnt[$row_cnt[1]-1] = $row_cnt[0];
    }
    $result_total = array_sum($array_cnt);
    mysql_free_result($result_cnt);


    if(new_list_category($table,"all"))
        $icon_new = "<img src=./image/icon_new.gif border=0>";
    else
        $icon_new = "";

    if(!$stext){
        $str = "<b><blink>[</blink> <a href=$loc> $icon_new 전체($result_total) </a> <blink>]</blink></b> ";
    } else {
        $str = "[ <a href=$loc> $icon_new 전체($result_total) </a> ] ";
    }
 
    $kk=0;
    while ($row = mysql_fetch_array($result))
    {     
        if(new_list_category($table,$row[ca_id]))
            $icon_new = "<img src=./image/icon_new.gif border=0>";
        else
            $icon_new = "";

        if($stext == $row[ca_id]) $str .= " <b><blink>[</blink> ";
        else                      $str .= " [ ";

        $str .= $icon_new;
        $ca_id_cnt = (int) $array_cnt[$kk++];
        $str .= " <a href=$loc$row[ca_id]>".get_category_name($table,$row[ca_id])."(".$ca_id_cnt.")</a> ";

        if($stext == $row[ca_id]) $str .= " <blink>]</blink></b> ";
        else                      $str .= " ] ";
    }

    mysql_free_result($result);

    return $str;
}

2. 게시판 스킨 디렉토리에있는 gblist.skin.php을 다음과 같이 수정한다.
아래의 수정전 내역을 수정후와 같이 바꾸셔도되고,
수정전 파일의 앞뒤에 html 주석을 처리를 하고 수정후를 추가하셔도 됩니다.
수정전 :
<!-- // html 주석으로 처리하고자 할경우
      <? if ($is_category) { ?>
          <select name=ca_id onchange="location='<?=$category_location?>'+this.value;" class=select>
          <option value=''>전체</option>
          <?=$category_option?>
          </select>
      <? } ?>
      // html 주석으로 처리하고자 할경우 -->
수정후 :
<?
if ($is_category) {
echo "<input type=hidden name=ca_id>";
echo get_category_list("$cfg[write_table_prefix]$bo_table",$category_location);
}
?>

3. 게시판 스킨 디렉토리에있는 gblist.skin.php에  다음 내용을 추가한다..
<?
/*******************************************************/
// 다음의 스크립터는 <blink></blink> 처리를 위한것이다.
// 350은 깜박이는 속도. (높은 수일수록 깜박이는 속도 느림)
/*******************************************************/
print "<script language=JavaScript>\n";
print " function doBlink() {\n";
print " var blink = document.all.tags(\"BLINK\")\n";
print " for (var i=0; i < blink.length; i++)\n";
print " blink[i].style.visibility = blink[i].style.visibility == \"\" ? \"hidden\" : \"\"\n";
print " }\n";
print " function startBlink() {\n";
print " if (document.all)\n";
print " setInterval(\"doBlink()\",350)\n";
print " }\n";
print " window.onload = startBlink;\n";
print "</script>\n";
?>
추천
0

댓글 전체

이미 해결후 이지만 올려주신 팁 완벽합니다.^^ 일부러 적용해봤습니다.
이전에 루트님께서 관련 스킨(카테고리를 왼쪽 메뉴처럼 사용하기)을 올려주셨을 때부터  절반은 사용하던 기능이라서 미리 가능했답니다. 문론 삽질해서요.^^; 방식도 그대로 따라서 developer.lib.php파일은 만지지도 않았습니다.
뭔 소린가 하실분도 계실까? 만약 그렇다면 스킨자료실에서 루트님께서 올리신 스킨을 찾아서 비교해 보아요~
이렇게 해야 학습이 되겠죠? 그렇지만 우선 항상 친절하신 루트님께 감사드립니다.
처음처럼님// 파란장미님// 좋은 지적 감사드립니다
다른일 신경쓰면서 좀 급하게 만들었더니 세밀한 체크를 못한것 같군요.
지적하신 문제점을 수정적용했습니다.
다시한번 적용해보시고 혹시 다른 문제점 있으시면 알려주십시오

혹시 좀더 자세한 수정부분을 알고싶으신분은 두번째 링크를 참조하십시오
ㅜ.ㅜ 루트님 정말 감동입니다 ... 예전에 질문글 올렸던건데 ...
이렇게 작업도 해주시고 ... 예전질문에 링크답변까지 달아주시고,
정말 루트님의 새심함에 놀랐습니다 ...
그누보드를 알게된지는 한 보름정도 되어가고 지금은 이것저것 한가지씩 알아가는 즐거움으로
조금씩 홈페이지 꾸며가고 있습니다 ... 항상 좋은팁 잘보고 있습니다 ...
위의 팁도 잘적용되어 사용중입니다 ... ^^
저도 위의 처음처럼님 같은 문제점이 발견되었습니다 ... 아직 카테고리에 글을 다 채워놓지 않은 상황이라서 ^^;
글을 채워놓으니 문제는 사라집니다 ... 그리고 한가지더 카테고리에 글이 없으면()  <-- 이런식으로 나옵니다..
없어도 ( 0 ) 영으로 라도 나왔으면 보기가 더 좋을텐데 ..ㅋㅋ
루트님 이번팁도 감사히 쓰겠습니다 ...
항상 좋은정보 감사드립니다.
그런데 해당 카테고리중 중간에 글이 없으면 게시물수가 밀려서 나타나네요.^^ 아래처럼요.
전체(190) Jazz(74) New Age(42) World(6) Classic(46) Soundtrack(0) Musical(7) Blues(5) Chanson(6new) 경우
전체(190) Jazz(74) New Age(42) World(6) Classic(46) Soundtrack(7) Musical(5) Blues(6) Chanson(new)으로요.
뭐가 문제인지 1시간정도 생쑈를 하다가 차분히 살펴보고 빈카테고리에 글을 적었더니 정상으로 표시됩니다.
수고 하셔서 좋은 정보를 올려주셨는데 저같은 분이 생길까봐 글을 올립니다. 즐거운시간 되세요.
전체 80
그누3 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT