[메뉴스킨] 그룹+게시판+분류 통합라이브러리(1),세로메뉴(1),보드맵(1) > 그누4 스킨

그누4 스킨

스킨의 저작권은 해당 스킨 제작자님께 있으며, 그누보드의 저작권과 다를 수 있습니다.
스킨 다운로드시 좋아요와 감사의 코멘트를 남기시면 제작자에게 큰 힘이됩니다. ^^y
그누보드와 관련이 있지만 스킨과 빌더가 아니면 플러그인 게시판에 올려주세요.

[메뉴스킨] 그룹+게시판+분류 통합라이브러리(1),세로메뉴(1),보드맵(1) 정보

기타 [메뉴스킨] 그룹+게시판+분류 통합라이브러리(1),세로메뉴(1),보드맵(1)

첨부파일

gbcRF.zip (6.1K) 652회 다운로드 2006-08-19 15:52:15

본문

그룹, 게시판, 분류 통합 메뉴 라이브러리와 이를 이용한 두개의 메뉴 스킨을 묶어 올립니다.
상당히 공을 들였는데 정리하고 보니 별게 없습니다.
고수님께서 쿼리와 함수 부분을 한번 체크해 주셨으면 고맙겠습니다.
이벤트 망원경 도착 자축 버전으로 심혈(?)을 기울였다는 후문입니다.^^

미리보기 - 링크1 좌측메뉴와 가운데 맨아래 그룹별 게시판 추출부분입니다.

그룹을 지정해서 호출할때
<?=gbcRF_menu("스킨디렉토리", "그룹아이디");?>
맵 형태의 메뉴등 전체그룹에서 추출할때 그룹아이디 비워둠
<?=gbcRF_menu("스킨디렉토리", "");?>

압축을 풀면 하나의 파일과 두개의 폴더가 있습니다.

gbcRF_menu.lib.php - 통합 라이브러리 파일 g4/extend/에 업로드(rolo님 라이브러리 수정)
    이 라이브러리 파일만으로 제가 공개했던 모든 메뉴를 스킨형태로 추출해낼 수 있습니다.

gbRF - 메뉴스킨 폴더 skin/menu/에 업로드
    그룹,게시판,분류까지 옵션에따라 추출하는 세로형 메뉴
    CSS로 구현한 그누보드4 게시판 및 분류 자동추출 세로 메뉴스킨
    게시판 및 분류에서 위치표시+새글갯수 표시, 분류 세로열 조정가능

gbRFcategory - 메뉴스킨 폴더 skin/menu/에 업로드
    제어된 그룹 및 게시판 목록을 사이트맵 형태로 추출
    게시판에서 새글갯수, 뉴아이콘 표시

///////////////// gbcRF_menu.lib.php 파일 /////////////////
그룹, 게시판, 분류 통합 메뉴 라이브러리
    rolo님 라이브러리에서 분류까지 제어하도록 수정함
왜 라이브러리냐?
    이 하나의 라이브러리로 그룹,게시판,분류를 아우르는 메뉴를 다양하고 손쉽게 만들수 있기 때문

    $list = array();

    $sql_common = " from " . $g4['group_table'] . " g inner join " . $g4['board_table'] . " b using (gr_id)  where ";

    //그룹값 있으면 해당그룹, 없으면 전체그룹
    if (!empty($gr_id))
        $sql_common .= " g.gr_id = '$gr_id' ";
    else
        $sql_common .= " g.gr_use_access = '0' ";

    //조건외 제외시키고자 하는 그룹 및 게시판을 수동으로 추가
    $excgr = "('', '', '')";
    $excbo = "('', '', '')";

    $sql_common .= " and g.gr_id not in " . $excgr . " and b.bo_table not in " . $excbo . " and b.bo_use_search = '1' and (bo_list_level <= $member[mb_level]) ";

    $sql_order = " order by gr_1 asc, bo_order_search asc ";

    $sql= " select g.gr_id, g.gr_subject, g.gr_use_access, b.bo_use_category, b.bo_category_list, b.bo_new, b.bo_use_search, b.bo_table, substring_index( bo_subject, ';', 1) bo_subject
        $sql_common
        $sql_order ";

    $result = sql_query($sql);
    for ($i=0; $row = sql_fetch_array($result); $i++) {

        $list[$row['gr_id']]['gr_id'] = $row['gr_id'];
        $list[$row['gr_id']]['gr_subject'] = $row['gr_subject'];
        $list[$row['gr_id']]['bbs'][] = array( 'bo_table'=> $row['bo_table'], 'bo_subject'=>$row['bo_subject'], 'bo_use_category'=>$row['bo_use_category'], 'bo_new'=>$row['bo_new'], 'sca'=>explode("|", $row['bo_category_list']));
    }

///////////////// gbcRF 스킨 /////////////////
그룹, 게시판, 분류 통합 메뉴 라이브러리(gbcRF_menu.lib.php) 연동
호출방법 <?=gbcRF_menu("스킨디렉토리", "그룹아이디");?>
그룹아이디 비워두면 전체그룹 에서 추출

logic 그룹, 게시판, 분류까지
foreach( $list as $group){
        그룹 배열변수 활용 $group['gr_subject'], $group['gr_id']등
    foreach( $group['bbs'] as $bbs){
        게시판 배열변수 활용 $bbs['bo_table'], $bbs['bo_subject']등
        foreach( $bbs['sca'] as $category) {
            분류 배열변수 $category
        }
    }
}

///////////////// gbRFcategory 스킨 /////////////////
그룹, 게시판, 분류 확장 메뉴 라이브러리(gbcRF_menu.lib.php) 연동
호출방법 <?=gbcRF_menu("스킨디렉토리", "그룹아이디");?>
그룹아이디 비워두면 전체그룹 에서 추출(맵 형태로 추출할 경우 비워둠)

logic 그룹, 게시판까지
foreach( $list as $group){
        그룹 배열변수 활용 $group['gr_subject'], $group['gr_id']등
    foreach( $group['bbs'] as $bbs){
        게시판 배열변수 활용 $bbs['bo_table'], $bbs['bo_subject']등
    }
}

/////////////////////////////////////////////////////////
logic을 간략하게 정리하면 이것뿐?!
알아보기 쉽도록 $group을 변수로 써도 되는지 몇군데 찔러보고 감행??
<DIV><?
foreach($list as $group){
    echo "<dl><b>" . $group['gr_subject'] . "</b> (" . $group['gr_id'] . ") 그룹</dl>";

    foreach( $group['bbs'] as $bbs) {
        echo "<dt><b>" . $bbs['bo_subject'] . "</b></dt>";
   
        foreach( $bbs['sca'] as $category) {
            echo "<dd><i>" . $category . "</i></dd>";
        }
    }
}
?></DIV>

그누보드 내장함수 print_r2($list);로 위 함수를 찍어본 것가운데 그룹하나를 붙여봄
[sample_gal] => Array
    (
        [gr_id] => sample_gal
        [gr_subject] => 갤러리샘플
        [bbs] => Array
            (
                [0] => Array
                    (
                        [bo_table] => sample_gallery_2
                        [bo_subject] => 갤러리 샘플2
                        [bo_use_category] => 1
                        [bo_new] => 24
                        [sca] => Array
                            (
                                [0] => 갤러리1
                                [1] => 갤러리2
                            )

                    )

                [1] => Array
                    (
                        [bo_table] => sample_gallery_1
                        [bo_subject] => 갤러리 샘플1
                        [bo_use_category] => 1
                        [bo_new] => 24
                        [sca] => Array
                            (
                                [0] => 갤러리1
                                [1] => 갤러리2
                            )

                    )

            )

    )

메뉴 미리보기와 위 쿼리와 함수로 전체 그룹에서 추출 테스트
http://gnusr.com/g4/template/menu/test_list.php
추천
21

댓글 전체

수고하셨습니다......^^

위의 본문 내용 들여다 보아도 까만건 글씨요...나머진 바탕으로 밖에.....ㅠ.ㅠ

언제 한번 시간 내서 들여다 보아야 겠습니다......

테스트에 도움을 드리지 못해 죄송합니다.....
우와~이거 대단한것 같아요~
저는 프로그램은 잘모르지만 여러가지를 한꺼번에 사용할수있을것 같다는 그런느낌이
팍팍~~!!듭니다.^^
감사합니다.
하나의 라이브러리에서 관련 메뉴를 모두 추출하면 좋겠다는 것이 저의 바램이기도 합니다.
올려드린 두 메뉴를 참고하시면 다양하게 응용가능하리라 봅니다.
코멘트마다 답변을 달아주셨네요. 플록님 스킨과 팁을 자주 봐서 알고 있었는데...
답변을 보면서 겸손하시며 긍정적인 성격을 가지신 분이라는 것을 느낄 수 있습니다.
스킨 감사드리고 많이 가르쳐 주세요.
izen님 감사합니다.
들여다 볼때마다 rolo님께서 제시하신 메뉴스킨화 방법에 대한 구조가 너무 간결하고 멋지다는 생각을 합니다.
rolo님께서 공개하신 라이브러리 골격을 유지하면서 분류부분만 추가하고 그누보드 원본소스와 유창화님의 소스코드를 참고해서 쿼리 부분을 약간 수정한것에 불과합니다.
foreach 함수와 카운트 쿼리부분에서 izen님께서 소개해 주신 php속도 개선팁이 큰 도움이 되었답니다.
멋쟁이 선후배님의 소스코드를 들여다보는 즐거움이 삽질을 부추기는 촉매가 아닌가 생각합니다.^^;
두분 코멘트 감사드립니다.^^

메뉴가 추출되면서 마지막 불럭(게시판이든 그룹이든)에도 경계선이 생겨 보기싫은 경우가 있습니다.
물론 경우에 따라서 마지막 경계선이 있는것이 좋은 경우도 있겠지만,,

아무튼 메뉴 마지막 블럭의 밑줄설정을 위한 간단한 팁을 올립니다.

먼저 세로메뉴 마지막 게시판 목록의 밑줄 제거팁입니다.

스타일 시트 수정 및 추가

    #bcRFV_board a.boardLink { /*게시판제목 링크 스타일*/
    width:156px;/*block 설정시 너비 빼먹으면 msie에서 안먹힘*/
    height:15px;
    display:block; /*포인터 영역 확대*/
    padding:5 0 5 0;
    }
    /*게시판 목록 밑줄 설정 - class 부분 3항연산*/
    #bcRFV_board a.uline {
    border-bottom:1px dotted gray;
    }
    #bcRFV_board a.cline {
    border:0px;
    }

소스에서 아랫부분을 찾아서 '추가' 부분만 추가해줍니다.
    $bbs_size= count( $group['bbs']);

    //게시판
    $cntb = 0;//<-- 추가1
    foreach($group['bbs'] as $bbs){

    /*logoc 좀더 간결하게 3항연산으로 대체함
    $x++;
    if($x<(count( $group['bbs']))){
        $line =  "uline";
    }
    else{
        $line =  "cline";
    }
    */
        $cntb++;//<-- 추가2

        아래 코드에서 class='boardLink <?=$cntb<$bbs_size?'uline':'cline';/*밑줄설정*/?>' 부분 추가3

        ?><div id='bcRFV_board'><a href='<?=$g4[bbs_path]?><?=$bbs['bo_table'] == "sample_gal"?'/gallery/?gur':'/board.php?bo_table=';/*특정게시판 경로*/?><?=$bbs['bo_table']?>' class='boardLink <?=$cntb<$bbs_size?'uline':'cline';/*밑줄설정*/?>' onfocus='this.blur()'><?=$bullet?> <?=$bo_subject?></a><?
~~
이어서 보드맵에서 마지막 불럭에는 아랫쪽 경계선을 없애는 팁입니다.

$menu_size= count( $list);

//그룹
$cntg=0;//<-- 추가1
foreach( $list as $group){

    }//bbs 이곳 게시판 함수가 끝나는 부분부터 아래 소스로 대체
    ?></td></tr><?

    $cntg++;
    if($cntg<$menu_size){//그룹 경계선 - 마지막 경계선 없음
        ?><tr><td height=1 colspan=2 style="background-image:url('<?=$menu_skin_path?>/img/dot_bg.gif')"></td></tr><?
    }
}//group
?></table>
izen님께서 스크립트를 이용한 라운드 테이블 때문에 스크립트 에러가 발생하는 부분을 지적해 주셨습니다.
갑사합니다.

최상위 테이블에서 아랫부분을 제거해서 일반형태의 테이블로 수정해주세요.
    id="*********" radius="3" rborder="#DDDDDD" rbgcolor="transparent"
    <script>roundTable("bcNRFV_css_skin");</script>
아주 좋은 스킨같네요. 테스트해보겠습니다. 아직 홈에 그룹,메뉴가  많지않아 좀 그런데 나중을 위해서 착실히 준비해놔야겠네요. 감사합니다.
정말 좋은 자료군요.

  여기에 이렇게 좋은 자료가 있는데 엉둥한 데서 며칠 헤맸습니다.

  정말 복받은 손입니다.

  큰 도움을 받았습니다.

  감사합니다.
감사히 잘쓰겠습니다...

좌측에 그룹메뉴 배경을 각 게시판의 칼라에 맞게 바꾸려면
각 스킨을 다시 만들어서 올려야 합니까?

gbcRF2....등

그리고 분류를 감싸는 라운드 테이블이 안 생깁니다. 라운드테이블이
생기는 팁을 받아서 head_sub.php 에 설체해주어야 합니까? 아님
그냥 생기는 겁니까?

좋은 하루 되세요...
감사합니다.^^

라운드 테이블은 팁테크에서 받으셔서 설정해주세요.

그룹별 바 컬러 다르게 설정 - 따로 만드실 필요없이 다음 1,2,3,4 번 순서로 수정 및 추가해주시면 됩니다.
//////////////////////////////////////////////////////////////
스타일 시트 수정,
  #bcRFV_group { /*그룹메뉴 영역*/
    margin-top:5px;
    padding:7 0 0 10;
    /*background-color:silver; 그룹별 별도 설정*/ <===== 1, 이줄 주석 처리
    border-bottom:#D0D0D0 solid 1px;
  }

2, 시타일 시트 추가(다음 패턴으로 원하는 컬러를 계속 추가해줍니다.)
.bg_silver {
  background-color:silver;
}
.bg_gray {
  background-color:gray;
}


//////////////////////////////
구현부 코드에서,

//그룹
foreach($list as $group){

  //$menu_size= count( $list);
  $bbs_size= count( $group['bbs']);

// 3, $bar_color .=~~~~ 필요한 만큼 추가  work, test는 그룹아이디, bg_silver는 위 스타일 클래스입니다.
  $bar_color = ($group['gr_id'] == "work") ? 'bg_silver' : '';//그룹바 색상 work그룹은 silver 이런식입니다.
  $bar_color .= ($group['gr_id'] == "test") ? 'bg_gray' : '';// .= 에 주의하면서 필요한 만큼 추가해줍니다.

  $group_subject = "<span style='font-weight:bold;'>" . cut_str(get_text($group['gr_subject']),20,"") . "</span>";
  $group_subject .= "<span style='font-size:8pt;'>&nbsp;Total:" . $bbs_size . " @gbcRF</span>";

// 4, 아래 class="<?=$bar_color?>" 추가
  ?><div id="bcRFV_group" class="<?=$bar_color?>"><a href='<?=$g4['path']?><?=$group['gr_id'] == "sample_gal" ? '/gallery' : '/bbs' ;/*특정그룹*/?>/group.php?gr_id=<?=$group['gr_id']?>' onfocus='this.blur()' class="groupSubject"><?=$group_subject?></a></div><?

//////////////////////////////////////////////////////////////
좋은 스킨 공개에 끝나지 않고 끝까지 질문에 성심껏 답변까지 해 주셔서 정말 감사드립니다.

정말 많은 이들에게 도움이 될 것입니다.

감사합니다.
분류 사용하는 법좀 알려주세요.
3일째 분류에 매달려 있는데 아직 지식이 너무 얕은지라..ㅜ.ㅜ
도대체 모르겠어요
사용스킨은 gbcRF 입니다.
플록님 스킨처럼 하고 싶어서 열심히 하긴 하는데 ㅜ.ㅜ
게시판 환경설정에서..
분류 항목에  분류1|분류2|분류3  처럼 |(파이프)로 구분해서 분류를 넣어주고,
그 오른쪽 " 사용 " 에 체크해주면 해당 게시판으로 이동시 분류가 자동으로 보여집니다.
헉!!
해당 게시판으로 이동시 분류가 자동으로 보여집니다.
..해당 게시판으로 이동시 분류가 자동으로 보여집니다.
....해당 게시판으로 이동시 분류가 자동으로 보여집니다.
......해당 게시판으로 이동시 분류가 자동으로 보여집니다.
........해당 게시판으로 이동시 분류가 자동으로 보여집니다.

ㅡ.ㅡ 전 이 분류를 해당게시판이 아닌 메인페이지에다 끌어서 쓰려니 안됬던 거였군요..
왜 다들 되는데 나만 안될까 한참 고민하다가 자괴감에 빠지기 직전 플록님이 구해주셨네요^^
감사합니다~
그리고 아직까지 모니터링 해주시는지 몰랐는데 이렇게 빨리 답변 달아주셔서 너무 감사합니다^^
잘쓰고있습니다.^^
그런데 한가지 제쪽에서만 이러는지 몰라도 새글표시가 이상해요.

코멘트랑 합계되어서 나오거든요~;;;; 그걸 고칠순 없을까요;

어디서 고치는지만 알려줘도 감사할게요
전체 5,850 |RSS
그누4 스킨 내용 검색

회원로그인

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