해당그룹 게시판 및 분류 자동추출 세로 메뉴(빨강앵두님^^;) > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

해당그룹 게시판 및 분류 자동추출 세로 메뉴(빨강앵두님^^;) 정보

해당그룹 게시판 및 분류 자동추출 세로 메뉴(빨강앵두님^^;)

본문

해당그룹 하위 게시판 및 분류를 보여주는 세로형 자동메뉴입니다.

  빨강앵두님께서 이전에 테스트중일때 스크랩하셨던 모양입니다.
  아래 유찬아빠님 팁을 보시고 테스트 사이트에 오셔서 요청글을 남기셨네요.^^;
  미리보기 링크1 참조하세요.

특징;
  해당 게시판 일때만 분류를 보여줍니다.
  해당 게시판 및 해당 분류일때 다른 스타일로 표시합니다.
  새글이 있는 경우 게시판 및 분류에 new아이콘 및 새글 갯수를 표시합니다.
    - 헐랭이님 소스코드 참조해서 수정했습니다.

사용법;
  $grN 쿼리에서 그룹아이디 넣어줍니다.
  뷸릿등 이미지 경로는 개인에 맞게 수정합니다.
  원하는 위치에 <? include_once("경로/bcFV.php"); ?> 해줍니다.

bcFV.php 전체소스
_____________________________________________________

<? if (!defined("_GNUBOARD_")) exit; // bcFV.php
#####################################################
# CSS로 구현한 그누보드4 게시판 및 분류 자동추출 세로 메뉴
# 특징- 게시판 및 분류에서 위치표시+새글갯수 보여줌
# 2006년 8월 5일 토요일, 헐랭이님 소스코드 참조 수정 - 플록
#####################################################
?><style type="text/css">
#bcFV_global { /*메뉴 가장자리를 감싸는 영역*/
width:174px;
background-color:transparent/*black*/;
position:relative;
}

#bcFV_group { /*그룹메뉴 영역*/
width:164px;
margin:5 0 0 5;
padding:7 0 0 10;
background-color:silver;
font-weight:bold;
}
.bcFV_group_subject { /*그룹제목 스타일*/
width:156px;/*block 설정시 너비 빼먹으면 msie에서 안먹힘*/
height:23px;
display:block; /*포인터 영역 확대*/
}

#bcFV_board { /*게시판 제목*/
width:174px;
margin:0 0 0 0;
padding:0 0 0 10;
background-color:transparent;
position:relative;
}
a.bcFV_board_subject { /*게시판제목 링크 스타일*/
width:156px;/*block 설정시 너비 빼먹으면 msie에서 안먹힘*/
height:15px;
display:block; /*포인터 영역 확대*/
border-bottom:1px dotted #DDD;
padding:5 0 5 0;
}

#bcFV_sub { /*분류 영역*/
margin:0 0 0 0;
padding:3 0 0 20;
width:130px;
height:20px;
}
a.bcFV_sub_subject { /*분류제목 링크 스타일*/
width:130px; /*block 설정시 너비 빼먹으면 msie에서 안먹힘*/
height:15px;
display:block; /*포인터 영역 확대*/
border-bottom:1px dotted #DDD;
padding:0 0 2 0;
}

a.on:link, a.on:visited, a.on:active { /*해당 게시판 및 분류 강조*/
color:#45436c;
font-weight:bold;
}
a.on:hover { /**/
color:orange;
font-weight:bold;
}
a.off:link, a.off:visited, a.off:active { /*일반 게시판 및 분류*/
color:gray;
}
a.off:hover { /**/
color:orange;
}
</style>

<!-- <table  id="r_tb_gnusr_bo_V_1" radius="3" rborder="#DDDDDD" rbgcolor="transparent" width='174' height="20" border='0' cellspacing='0' cellpadding='0'>
<tr>
<td> -->

<div id="bcFV_global"><?
//### 그룹 추출 - 메뉴가 위치하는 그룹만
$grN = sql_fetch(" select gr_id, gr_subject from $g4[group_table] where gr_id = '$gr_id 또는 그룹아이디' ");//그룹지정
?><div id="bcFV_group">
    <a href='<?=$g4[bbs_path]?><?=$grN[gr_id] == "sample_gal"?'/gallery':'';/*특정그룹 경로*/?>/group.php?gr_id=<?=$grN[gr_id]?>' onfocus='this.blur()' class="bcFV_group_subject"><?=$grN[gr_subject]?></a></div><?

$bar = " - ";
$blue_bullet = "<img src='$tpl[img]/bullets/icon_nemo.gif' border='0' align='absmiddle'>";

//## 게시판 추출 -레벨에 따른 목록 권한설정 적용후 검색순 정렬
$sql = " select bo_table, bo_subject, bo_new from $g4[board_table] where (bo_list_level <= $member[mb_level]) and (gr_id = '$grN[gr_id]') order by bo_order_search";//(gr_id = '$gr_id')
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {

    $tmp_write_table = $g4[write_prefix] . $row[bo_table];

    $new_time = date("Y-m-d H:i:s", time()-3600*$row[bo_new]);

    $sql_new = " select wr_datetime from $tmp_write_table where wr_datetime >= '$new_time' ";
    $result_new = sql_query($sql_new);
    // bo_new에서 지정한 시간내 게시판 전체 새글 카운트
    $bn_count = mysql_num_rows($result_new);
    if ($bn_count > 0) {
        $new = " (<span><font color=#f923e>$bn_count</font>)&nbsp;<img src='$tpl[img]/icon/icon_new.gif' border='0'></span>";
    }else{
        $new = "";
        }
    //게시판 제목 및 아이콘, 새글 갯수 처리
    $style = "";
    if ($row[bo_table] == $bo_table)//해당 게시판 강조
    $style = " style='font-weight:bold; color:orange;' ";
    $bo_sub = "<span $style>" . cut_str(get_text($row[bo_subject]),20,"") . "</span>" .$new;

    ?><div id="bcFV_board"><a href='<?=$g4[bbs_path]?>/board.php?bo_table=<?=$row[bo_table]?>' class='bcFV_board_subject'><?=$blue_bullet?> <?=$bo_sub?></a></div><?

    //해당 게시판만 분류 추출
    if ($row[bo_table] == $bo_table) {

        $sql2 = " select bo_category_list from $g4[board_table] where bo_table = '$row[bo_table]' order by bo_table ";
        $row2 = sql_fetch($sql2);
        $category = explode("|", $row2['bo_category_list']);
        for ($j=0; $j<count($category); $j++) {
        $sql2_new  = " select wr_datetime,ca_name from $tmp_write_table where wr_datetime >= '$new_time' and ca_name = '$category[$j]'";
        $result2_new = sql_query($sql2_new);
        // bo_new에서 지정한 시간내 분류별 새글 카운트
        $cn_count = mysql_num_rows($result2_new);

            if ($category[$j]) {
            //카데고리가 있을때만 출력
            //링크에서 한글로된 카데고리 이름을 urlencode시킴
            $sca_url = urlencode($category[$j]);

            if ($cn_count > 0) {
                $new2 = " (<span><font color=#5923e>$cn_count</font>)&nbsp;<img src='$tpl[img]/icon/icon_new.gif' border='0'></span>";
            }else{
                $new2 = "";
            } 

            //분류 제목 및 아이콘, 새글 갯수 처리
            $style = "";
            if ($category[$j] == $sca)
            $style = " style='color:orange;' ";
            $ca_name = "<span $style>" . cut_str($category[$j], 14) . "</span>" .$new2;

            ?><div id='bcFV_sub'><a href='./board.php?bo_table=<?=$bo_table?>&sca=<?=$sca_url?><?//=$category[$j]?>' class='bcFV_sub_subject'><?=$bar?> <?=$ca_name?></a></div><?

            }
        }
    }
}

?></div>

<div style='clear: both;'></div>

<!-- </td>
</tr>
</table>       
<script>roundTable("r_tb_gnusr_bo_V_1");</script> -->
추천
1

댓글 24개

고생하셨습니다.
멋진 팁입니다.

최하단에 언급된 '테이블 라운드 처리용 자바스크립트'는,
사용자의 환경에 따라서 무거워지거나 잦은 자바스크립트 오류를
출력시키는 주범이 될 수도 있을 것 같습니다.
(특히, 네트워크 소통 상황이 원활치 못한 경우에...)

FF에서도 원래의 의도를 왜곡하지 않은 출력형태와,
현재의 위치(네비게이터로서의 역할)를 체크해 주는 스타일시트의 적용이 멋집니다.
감사합니다.
아주 기본적인 형태에 충실한 기능을 담아 보려 노력했습니다.
버그 리포트 기대합니다.
  저녁 먹으로 잠간 자리를 비웁니다.^^;;
무조건 테스트하는 습관이라..하하하

카테고리가 저는 안나오네요

뭐가 문제죠?

http://artpia.net/art/bbs/board.php?bo_table=test3

-------------------------------------
다른질문요..

한 이틀을 찿았는데 도저히 못 찿겠네요^^

그룹 상단메뉴중

그룹-가로
서브-가로

위에처럼 팁이 안보이네요..

플록님 홈도 가봤는데 미로와 같더군요..하하하
손 닿는대로 여기저기서 테스트하는 시츄에이숀이라 어지럽습니다.^^
이미 공개된 ypSlide 어쩌구 하는 메뉴에서 서브 영역을 만지시면 됩니다.
개인적으로 만족스럽지 않아 개선 방법을 찾는중입니다.
카테고리(명)를 처리하는 데 약간의 문제가 있습니다.
이 부분은 최근 g4팁 게시판에 등록된 팁을 응용하시면 될 듯 합니다.
관련 팁은 utf-8에서 url의 인코딩에 관한 팁입니다.
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=5608&sca=&sfl=wr_subject&stx=utf-8&sop=and

에구... 소스파일 내부에 이미 적용되어 있었군요.
그럼에도... 카테고리를 주소표시줄에서 정상적으로 처리하지 못한다는 것은...
숙제군요. 홍홍~*

$board[bo_use_category]의 사용여부에 따라서 카테고리명의 출력이 제어되어야 할 것 같습니다.
게시판 설정에서 카테고리는 존재하나 실제 웹페이지에 출력되는 게시판에서는 사용하지 않을 경우,
카테고리 추출 관련 오류메시지가 출력됩니다.
카테고리의 출력을 임의로 비틀었을 경우,
즉, 기본스킨처럼 select box형태일 경우는 문제가 없으나,
'칠쟁이'님의 경우처럼 임의의 카테고리의 출력을 조작했을 경우는,
본 팁을 그대로 사용시 문제가 발생됩니다.
(fcategory~관련 자바스크립트 오류메시지 - 단, 실제 구동상 문제는 없음.)

> $board[bo_use_category]의 사용여부에 따라서 카테고리명의 출력이 제어되어야 할 것 같습니다.
<? if ($board[bo_use_category] == "1") { ?>
//카테고리 사용 옵션에 체크된 경우라면,
<? } ?>
직전의 구문만 적절히 처리해 주신다면 정말 매끄러운 팁이 될 듯 합니다. (끝... 일까요?! *^^*)
끝이 없을듯 하옵니다.~~**

    //카테고리 사용 체크된 해당 게시판일때만 분류를 보여준다
    //if ($row[bo_table] == $bo_table) {
    if (($row[bo_table] == $bo_table) && ($board[bo_use_category])) {
아주 좋습니다..//

그런데 http://www.sir.co.kr/bbs/tb.php/g4_tiptech/6746 처럼..

카테고리 있는 게시판은 + 표시가 나타나게 할 수 있으면 더욱 좋겠습니다..
<?
if(!$board[bo_table]) {
exit;
}
?>

<div id="bcFV_global"><?
//### 그룹 추출 - 메뉴가 위치하는 그룹만

상단과 같이 테이블(게시판을 출력해주는 페이지가 아니라면)이 없다면,
하단 구문을 실행시키지 않고 탈출시키는 구문(exit;)도 필요할 듯 합니다.
감사합니다.^^;

그룹 메인 페이지 구성 방법에 따라 적용여부를 생각해 봐야할듯 합니다.
저의 경우처럼 별도의 템플릿을 적용해서 그룹메인을 구성한 경우($gr_id,$bo_table값 없을 경우)에 어려움이 있군요.
카테고리 있는 게시판 표시 + 카테고리 토글 on,off + 부드러운 슬라이드 + 또 뭐가 있더라~~**

아무튼 삭제는 물^건너 간듯 합니다.^^ ㅎㅎ
안전한 유지를 위해서 거시기 합니다.

참... 삭제하시면 패널티 붙는것은 아시지요잉~*^^*

신규 게시물의 등록현황 카운트가 적절히 수정되어야 할 필요성이 보입니다.
(이 부분은 root님의 팁 또는 root님 홈페이지에서 수월하게 찾아보실 수 있습니다.)

카운트의 출력은 (원게시물 / 코멘트게시물)의 형태로 출력되어야 할 필요성도 보입니다.
별볼일 없는 소스에 대한 코멘트가 너무나 부담스럽사옵니다~~**

요청에 의한 공개라고 하더라도 , 남새스러움이 있답니다.

exit; 구문에 대한 공부또한 진행형이라,,~~**

ps)
관심을 가지고 계신 분들께는 적절한 노출이었다고 생각합니다.
제 개인의 생각에 따라 불시 삭제하더라도 넓은 아량으로 이해해 주시길 바랍니다.
음~~~ 먼저 애쓰신 결과물을 이렇게 공개해주시는 분들께 감사를 드립니다.
그런데 아무리 해도 잘 안되는 부분이 있군요.

$grN = sql_fetch(" select gr_id, gr_subject from $g4[group_table] where gr_id ='$gr_id' ");//그룹지정

바로 요 부분인데요.
'$gr_id' <-- 여기에 그룹 이름을 써넣으면 하나의 그룹은 문제없이 나타나는데 - 이건 거의 환상적이라고 할 수 있지요. 링크도 정확하구요. 그런데 둘 이상의 그룹을 불러오려니가 영 안되는군요.

  어떻게 하면 모든 그룹을 불러오고 그 아래 게시판들을 서브메뉴로 불러올 수 있을까요?

  그럼 좋은 답변을 기다리겠습니다.
그리고 하나 더.

  이렇게 그룹을 불러오면 그룹 안에 있는 게시판들이 아래로 주욱 늘어서게 되는데 이 게시판들을 2단이나 3단으로 불러올 수 있는 방법은 없을까요?

  당연히 있겠지요.
  허지만 제가 워낙 문외한이어서 어디를 어떻게 손대야 할지 난감하군요.

  고수님들 부탁드립니다.
  다른 분들은 이런 어려움이 없으신지 여기 저기 검색을 해도 이런 고민은 없군요.
  나만 못하나봐요.

  그럼 부탁드립니다.
전체 3,309 |RSS
그누4 팁자료실 내용 검색

회원로그인

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