[제나플러스] 그룹내 게시판 및 분류 추출 세로형 자동메뉴
본문
그룹에 속한 게시판 및 분류 추출 세로형 자동메뉴 bcRFV_css.php 입니다.
http://www.sir.co.kr/bbs/tb.php/g4_tiptech/6766 속도 및 새글 카운트가 보강되었습니다.
특징;
# 기능은 위 메뉴와 크게 다르지 않으나 속도 향상과 관련된 중요한 패치가 되었습니다.
foreach 함수 사용 및 쿼리 속도를 높이기위해 대해 아래팁을 참조했습니다.
http://www.sir.co.kr/bbs/tb.php/pl_php/240
# 새글이 있는 경우 게시판 및 분류에 (원글/코멘트) 형식의 지정시간내 새글 숫자가 보여집니다.
(나스카님께서 만들어 주셨고 izen님 속도향상 관련 쿼리를 참조 수정하였습니다. 죄송^^)
# 나스카님께서 코멘트 카운트만 있는 게시판 및 카테고리에서 카운트 노출 안 되는 버그를 잡아주셨습니다.
# 카테고리 세로칼럼을 조정해서 두줄이상으로 설정해서 보여줄 수 있게 했습니다.
http://www.babybox.co.kr/g4/bbs/board.php?bo_table=work 두줄 css 타입 정렬입니다.
http://www.babybox.co.kr/g4/bbs/board.php?bo_table=my_page 두줄 table 타입 정렬입니다.
분류 배열만 테이블을 사용한 것으로 필요하신분은 코멘트 남겨주시면 해당 부분만 올려드리겠습니다.
# 그룹내 권한에 해당되는(보여지는) 게시판 숫자가 그룹이름 옆에 나타납니다.
# 카테고리가 있는 게시판은 게시판 이름옆에 특정 표시(·)가 나타납니다.
해당 게시판 일때만 분류를 보여줍니다.
해당 게시판 및 해당 분류일때 다른 스타일로 표시합니다.
직접 도움을 주신 나스카님께 특별히 감사드립니다.
미리보기 링크1 왼쪽 아래 걸려있습니다.
링크의 위쪽 메뉴는 new_table활용형 테스트 메뉴입니다.
버그 리포트 기대합니다.^^
--------------------------------------------------------------------------------
원하는 위치에 <? include_once("경로/bcRFV_css.php"); ?> 해줍니다.
<? if (!defined("_GNUBOARD_")) exit; // bcRFV_css.php
########################################################
# CSS로 구현한 그누보드4 게시판 및 분류 자동추출 세로 메뉴
# 게시판 및 분류에서 위치표시+새글갯수 표시, 분류 세로열 조정가능
# 2006년 8월 13일, 헐랭이님, 나스카님 소스코드 참조 수정 - 플록
########################################################
?><style type="text/css">
#bcRFV_global { /*메뉴 가장자리를 감싸는 영역*/
width:174px;
background-color:transparent/*black*/;
position:relative;
padding:5 0 0 0;
}
#bcRFV_group { /*그룹메뉴 영역*/
width:164px;
margin:5 0 0 5;
padding:7 0 0 10;
background-color:silver;
/*font-weight:bold;*/
}
.bcRFV_group_subject { /*그룹제목 스타일*/
width:156px;/*block 설정시 너비 빼먹으면 msie에서 안먹힘*/
height:23px;
display:block; /*포인터 영역 확대*/
}
#bcRFV_board { /*게시판 제목*/
width:174px;
margin:0 0 0 0;
padding:0 0 0 10;
background-color:transparent;
position:relative;
}
a.bcRFV_board_subject { /*게시판제목 링크 스타일*/
width:156px;/*block 설정시 너비 빼먹으면 msie에서 안먹힘*/
height:15px;
display:block; /*포인터 영역 확대*/
border-bottom:0px dotted gray;
padding:5 0 5 0;
}
#bcRFV_sub { /*분류 영역*/
position:relative;
border-right:0px dotted gray;
border-bottom:1px dotted gray;
border-left:0px dotted gray;
}
a.bcRFV_sub_subject { /*분류제목 링크 스타일*/
width:100px; /*block 설정시 너비 빼먹으면 msie에서 안먹힘*/
height:15px;
display:block; /*포인터 영역 확대*/
border-bottom:0px dotted gray;
margin-left:10;
padding:5 0 2 0;
}
.new {
font: oblique small-caps 500 12px/15px arial;
color:red;
}
</style><?
// rolo님 메뉴스킨 라이브러리 참조, 일반적인 조건으로 쿼리
// 제외 게시판 - 전체 검색 사용 no, 목록열람 레벨
// 게시판 정렬 - 전체 검색 오름 차순
// 나스카님 원글 및 분류별 새글 카운트(izen님 php속도향상팁 적용)
?><div id='bcRFV_global'><?
//### 그룹 추출 - 메뉴가 위치하는 그룹
$grN = sql_fetch(" select gr_id, gr_subject from $g4[group_table] where gr_id = '$gr_id 또는 그룹아이디' ");//그룹명시
$bar = " - ";
$bullet = "⊙";
$list = array();
//제외시키고자 하는 게시판을 수동으로 추가
$exc = "('게시판1', '게시판2', '게시판3')";
//## 게시판 추출 -목록열람 레벨 적용후 검색순 정렬
$sql = " select bo_table, bo_subject, bo_category_list, bo_use_category, bo_new from $g4[board_table] where (bo_list_level <= $member[mb_level]) and (gr_id = '$grN[gr_id]') and bo_table not in {$exc} order by bo_order_search";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {
$list[$row['bo_table']]['bo_subject'] = $row['bo_subject'];
$list[$row['bo_table']]['sca'] = explode("|", $row['bo_category_list']);
$list[$row['bo_table']]['bo_use_category'] = $row['bo_use_category'];
$list[$row['bo_table']]['bo_new'] = $row['bo_new'];
}
//### 그룹
$menu_size= count( $list);
$group_subject = "<span style='font-weight:bold;'>" . cut_str(get_text($grN['gr_subject']),20,"") . "</span>";
$group_subject .= "<span style='font-size:8pt;'> Total:" . $menu_size . "</span>";
?><div id="bcRFV_group">
<a href='<?=$g4['bbs_path']?><?=$grN['gr_id'] == "sample_gal"?'/gallery':'';/*특정그룹 경로*/?>/group.php?gr_id=<?=$grN['gr_id']?>' onfocus='this.blur()' class="bcRFV_group_subject"><?=$group_subject?></a></div><?
//## 게시판 목록
foreach( $list as $key=> $value) {
$tmp_write_table = $g4[write_prefix] . $key;
$intime = date("Y-m-d H:i:s", time()-3600*$value['bo_new']);
//원글 및 코멘트 새글 카운트 by nasca, izen님 빠른쿼리로 보강
$sql_new = mysql_query(" select count(wr_datetime) as wr_datetime from $tmp_write_table where wr_is_comment = '0' and wr_datetime >= '$intime' ");
$row_new = mysql_fetch_array($sql_new);
$sql_cm_new = mysql_query(" select count(wr_datetime) as wr_datetime from $tmp_write_table where wr_is_comment <> '0' and wr_datetime >= '$intime' ");
$row_cm_new = mysql_fetch_array($sql_cm_new);
$bn_count = $row_new['wr_datetime'];
$bn_countc = $row_cm_new['wr_datetime'];
if ($bn_count || $bn_countc > 0) {
$new = " <span class='new'>(" . $bn_count . '/' . $bn_countc . ")</span>";
}else{
$new = "";
}
foreach( $value['sca'] as $category) {//분류가 있고 분류사용 체크된 게시판 별도표시
$sicon = "";
if (($value['bo_use_category'] == "1") && ($category)) {
$sicon = " <span style='color:red;'>·</span>";
}
}
$style = "";
if ($key == $bo_table)//해당 게시판 강조
$style = "style='font-weight:bold; color:red;'";
$bo_subject = "<span $style>" . cut_str(get_text($value['bo_subject']),20,"") . "</span>" . $new . $sicon;
?><div id='bcRFV_board'><a href='<?=$g4[bbs_path]?>/board.php?bo_table=<?=$key?>' class='bcRFV_board_subject' onfocus='this.blur()'><?=$bullet?> <?=$bo_subject?></a><div id='bcRFV_sub'><?
//분류목록 세로배열
$bo_width = 100;//전체 너비 %
$cols = 2;//세로 칼럼수
$ca_width = intval($bo_width / $cols);//분류 너비 %
$cnt = 1;
//게시판이고 분류사용 체크되있으며 분류내용 있는 경우
if (($key == $bo_table) && (($value['bo_use_category'] == "1") && ($category))) {
?><div style="width:<?=$bo_width?>%; border:0px solid white;"><?
//# 분류 목록
foreach( $value['sca'] as $category) {
//bo_new에서 지정한 시간내 분류별 원글 및 코멘트 새글 카운트 by nasca, izen님 빠른쿼리로 보강
$sql2_new = mysql_query(" select count(wr_datetime) as wr_datetime from $tmp_write_table where wr_is_comment = '0' and wr_datetime >= '$intime' and ca_name = '$category'");
$row2_new = mysql_fetch_array($sql2_new);
$sql2_cm_new = mysql_query(" select count(wr_datetime) as wr_datetime from $tmp_write_table where wr_is_comment <> '0' and wr_datetime >= '$intime' and ca_name = '$category'");
$row2_cm_new = mysql_fetch_array($sql2_cm_new);
$cn_count = $row2_new['wr_datetime'];
$cn_countc = $row2_cm_new['wr_datetime'];
if ($cn_count || $cn_countc > 0) {
$new2 = " <span class='new'>(" . $cn_count . '/' . $cn_countc . ")</span>";
}else{
$new2 = "";
}
//링크에서 한글로된 카데고리 이름을 urlencode시킴
$sca_url = urlencode($category);
$style = "";
if ($category == $sca)//해당 분류 강조
$style = "style='font-weight:normal; color:red;'";
$ca_subject = "<span $style>" . cut_str(get_text($category),10,"") . "</span>" . $new2;
?><span style="width:<?=$ca_width?>%;padding:3 0 3 10;"><a href='<?=$g4['bbs_path']?>/board.php?bo_table=<?=$key?>&sca=<?=urlencode($category)?>' style="border-bottom:0px dotted gray;" onfocus='this.blur()'><?=$bar?> <?=$ca_subject?></a>
</span><?
if ($cnt == $cols){
$cnt = 0;
?></div><div style="width:<?=$bo_width?>%; border:0px solid red;"><?
}
$cnt++;
}//foreach
?></div><?
}//if
?></div></div><?
}//foreach 주메뉴 끝
?></div><!-- bcRFV_global end -->
<div style='clear: both;'></div>
http://www.sir.co.kr/bbs/tb.php/g4_tiptech/6766 속도 및 새글 카운트가 보강되었습니다.
특징;
# 기능은 위 메뉴와 크게 다르지 않으나 속도 향상과 관련된 중요한 패치가 되었습니다.
foreach 함수 사용 및 쿼리 속도를 높이기위해 대해 아래팁을 참조했습니다.
http://www.sir.co.kr/bbs/tb.php/pl_php/240
# 새글이 있는 경우 게시판 및 분류에 (원글/코멘트) 형식의 지정시간내 새글 숫자가 보여집니다.
(나스카님께서 만들어 주셨고 izen님 속도향상 관련 쿼리를 참조 수정하였습니다. 죄송^^)
# 나스카님께서 코멘트 카운트만 있는 게시판 및 카테고리에서 카운트 노출 안 되는 버그를 잡아주셨습니다.
# 카테고리 세로칼럼을 조정해서 두줄이상으로 설정해서 보여줄 수 있게 했습니다.
http://www.babybox.co.kr/g4/bbs/board.php?bo_table=work 두줄 css 타입 정렬입니다.
http://www.babybox.co.kr/g4/bbs/board.php?bo_table=my_page 두줄 table 타입 정렬입니다.
분류 배열만 테이블을 사용한 것으로 필요하신분은 코멘트 남겨주시면 해당 부분만 올려드리겠습니다.
# 그룹내 권한에 해당되는(보여지는) 게시판 숫자가 그룹이름 옆에 나타납니다.
# 카테고리가 있는 게시판은 게시판 이름옆에 특정 표시(·)가 나타납니다.
해당 게시판 일때만 분류를 보여줍니다.
해당 게시판 및 해당 분류일때 다른 스타일로 표시합니다.
직접 도움을 주신 나스카님께 특별히 감사드립니다.
미리보기 링크1 왼쪽 아래 걸려있습니다.
링크의 위쪽 메뉴는 new_table활용형 테스트 메뉴입니다.
버그 리포트 기대합니다.^^
--------------------------------------------------------------------------------
원하는 위치에 <? include_once("경로/bcRFV_css.php"); ?> 해줍니다.
<? if (!defined("_GNUBOARD_")) exit; // bcRFV_css.php
########################################################
# CSS로 구현한 그누보드4 게시판 및 분류 자동추출 세로 메뉴
# 게시판 및 분류에서 위치표시+새글갯수 표시, 분류 세로열 조정가능
# 2006년 8월 13일, 헐랭이님, 나스카님 소스코드 참조 수정 - 플록
########################################################
?><style type="text/css">
#bcRFV_global { /*메뉴 가장자리를 감싸는 영역*/
width:174px;
background-color:transparent/*black*/;
position:relative;
padding:5 0 0 0;
}
#bcRFV_group { /*그룹메뉴 영역*/
width:164px;
margin:5 0 0 5;
padding:7 0 0 10;
background-color:silver;
/*font-weight:bold;*/
}
.bcRFV_group_subject { /*그룹제목 스타일*/
width:156px;/*block 설정시 너비 빼먹으면 msie에서 안먹힘*/
height:23px;
display:block; /*포인터 영역 확대*/
}
#bcRFV_board { /*게시판 제목*/
width:174px;
margin:0 0 0 0;
padding:0 0 0 10;
background-color:transparent;
position:relative;
}
a.bcRFV_board_subject { /*게시판제목 링크 스타일*/
width:156px;/*block 설정시 너비 빼먹으면 msie에서 안먹힘*/
height:15px;
display:block; /*포인터 영역 확대*/
border-bottom:0px dotted gray;
padding:5 0 5 0;
}
#bcRFV_sub { /*분류 영역*/
position:relative;
border-right:0px dotted gray;
border-bottom:1px dotted gray;
border-left:0px dotted gray;
}
a.bcRFV_sub_subject { /*분류제목 링크 스타일*/
width:100px; /*block 설정시 너비 빼먹으면 msie에서 안먹힘*/
height:15px;
display:block; /*포인터 영역 확대*/
border-bottom:0px dotted gray;
margin-left:10;
padding:5 0 2 0;
}
.new {
font: oblique small-caps 500 12px/15px arial;
color:red;
}
</style><?
// rolo님 메뉴스킨 라이브러리 참조, 일반적인 조건으로 쿼리
// 제외 게시판 - 전체 검색 사용 no, 목록열람 레벨
// 게시판 정렬 - 전체 검색 오름 차순
// 나스카님 원글 및 분류별 새글 카운트(izen님 php속도향상팁 적용)
?><div id='bcRFV_global'><?
//### 그룹 추출 - 메뉴가 위치하는 그룹
$grN = sql_fetch(" select gr_id, gr_subject from $g4[group_table] where gr_id = '$gr_id 또는 그룹아이디' ");//그룹명시
$bar = " - ";
$bullet = "⊙";
$list = array();
//제외시키고자 하는 게시판을 수동으로 추가
$exc = "('게시판1', '게시판2', '게시판3')";
//## 게시판 추출 -목록열람 레벨 적용후 검색순 정렬
$sql = " select bo_table, bo_subject, bo_category_list, bo_use_category, bo_new from $g4[board_table] where (bo_list_level <= $member[mb_level]) and (gr_id = '$grN[gr_id]') and bo_table not in {$exc} order by bo_order_search";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {
$list[$row['bo_table']]['bo_subject'] = $row['bo_subject'];
$list[$row['bo_table']]['sca'] = explode("|", $row['bo_category_list']);
$list[$row['bo_table']]['bo_use_category'] = $row['bo_use_category'];
$list[$row['bo_table']]['bo_new'] = $row['bo_new'];
}
//### 그룹
$menu_size= count( $list);
$group_subject = "<span style='font-weight:bold;'>" . cut_str(get_text($grN['gr_subject']),20,"") . "</span>";
$group_subject .= "<span style='font-size:8pt;'> Total:" . $menu_size . "</span>";
?><div id="bcRFV_group">
<a href='<?=$g4['bbs_path']?><?=$grN['gr_id'] == "sample_gal"?'/gallery':'';/*특정그룹 경로*/?>/group.php?gr_id=<?=$grN['gr_id']?>' onfocus='this.blur()' class="bcRFV_group_subject"><?=$group_subject?></a></div><?
//## 게시판 목록
foreach( $list as $key=> $value) {
$tmp_write_table = $g4[write_prefix] . $key;
$intime = date("Y-m-d H:i:s", time()-3600*$value['bo_new']);
//원글 및 코멘트 새글 카운트 by nasca, izen님 빠른쿼리로 보강
$sql_new = mysql_query(" select count(wr_datetime) as wr_datetime from $tmp_write_table where wr_is_comment = '0' and wr_datetime >= '$intime' ");
$row_new = mysql_fetch_array($sql_new);
$sql_cm_new = mysql_query(" select count(wr_datetime) as wr_datetime from $tmp_write_table where wr_is_comment <> '0' and wr_datetime >= '$intime' ");
$row_cm_new = mysql_fetch_array($sql_cm_new);
$bn_count = $row_new['wr_datetime'];
$bn_countc = $row_cm_new['wr_datetime'];
if ($bn_count || $bn_countc > 0) {
$new = " <span class='new'>(" . $bn_count . '/' . $bn_countc . ")</span>";
}else{
$new = "";
}
foreach( $value['sca'] as $category) {//분류가 있고 분류사용 체크된 게시판 별도표시
$sicon = "";
if (($value['bo_use_category'] == "1") && ($category)) {
$sicon = " <span style='color:red;'>·</span>";
}
}
$style = "";
if ($key == $bo_table)//해당 게시판 강조
$style = "style='font-weight:bold; color:red;'";
$bo_subject = "<span $style>" . cut_str(get_text($value['bo_subject']),20,"") . "</span>" . $new . $sicon;
?><div id='bcRFV_board'><a href='<?=$g4[bbs_path]?>/board.php?bo_table=<?=$key?>' class='bcRFV_board_subject' onfocus='this.blur()'><?=$bullet?> <?=$bo_subject?></a><div id='bcRFV_sub'><?
//분류목록 세로배열
$bo_width = 100;//전체 너비 %
$cols = 2;//세로 칼럼수
$ca_width = intval($bo_width / $cols);//분류 너비 %
$cnt = 1;
//게시판이고 분류사용 체크되있으며 분류내용 있는 경우
if (($key == $bo_table) && (($value['bo_use_category'] == "1") && ($category))) {
?><div style="width:<?=$bo_width?>%; border:0px solid white;"><?
//# 분류 목록
foreach( $value['sca'] as $category) {
//bo_new에서 지정한 시간내 분류별 원글 및 코멘트 새글 카운트 by nasca, izen님 빠른쿼리로 보강
$sql2_new = mysql_query(" select count(wr_datetime) as wr_datetime from $tmp_write_table where wr_is_comment = '0' and wr_datetime >= '$intime' and ca_name = '$category'");
$row2_new = mysql_fetch_array($sql2_new);
$sql2_cm_new = mysql_query(" select count(wr_datetime) as wr_datetime from $tmp_write_table where wr_is_comment <> '0' and wr_datetime >= '$intime' and ca_name = '$category'");
$row2_cm_new = mysql_fetch_array($sql2_cm_new);
$cn_count = $row2_new['wr_datetime'];
$cn_countc = $row2_cm_new['wr_datetime'];
if ($cn_count || $cn_countc > 0) {
$new2 = " <span class='new'>(" . $cn_count . '/' . $cn_countc . ")</span>";
}else{
$new2 = "";
}
//링크에서 한글로된 카데고리 이름을 urlencode시킴
$sca_url = urlencode($category);
$style = "";
if ($category == $sca)//해당 분류 강조
$style = "style='font-weight:normal; color:red;'";
$ca_subject = "<span $style>" . cut_str(get_text($category),10,"") . "</span>" . $new2;
?><span style="width:<?=$ca_width?>%;padding:3 0 3 10;"><a href='<?=$g4['bbs_path']?>/board.php?bo_table=<?=$key?>&sca=<?=urlencode($category)?>' style="border-bottom:0px dotted gray;" onfocus='this.blur()'><?=$bar?> <?=$ca_subject?></a>
</span><?
if ($cnt == $cols){
$cnt = 0;
?></div><div style="width:<?=$bo_width?>%; border:0px solid red;"><?
}
$cnt++;
}//foreach
?></div><?
}//if
?></div></div><?
}//foreach 주메뉴 끝
?></div><!-- bcRFV_global end -->
<div style='clear: both;'></div>
추천0
관련링크
댓글목록 0
등록된 댓글이 없습니다.