메뉴 만들기 도와주세요. > 그누4 질문답변

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

메뉴 만들기 도와주세요. 정보

메뉴 만들기 도와주세요.

본문

 
얼마전 설치 및 사용후기에 올라온 사이트 입니다.
 
메뉴가 마치 플래시로 작업해서 다운... 펼쳐짐 의 형태로 나오는 군요...
 
자바인것 같기는 한데....
 
제가 자바 소스에는 상당히 약한 편이라 도저히 엄두가 안나네요...
 
혹시 자바가 아니라면 죄송합니다. (무식이 죄 -_-;;)
 
그냥 플래시로 해 버릴까 하는 생각도 있지만... (실은 플래시는 더 못함... -_-;;)
 
그래도 고전적인 느낌이 더 좋을 것 같기도 하구요....
 
이렇게 마우스 오버 하면 그룹에 연결된 게시판 주루룩 나오고...
 
클릭하면 왼쪽에 세로로 게시판 명이 나오게 하는 소스 좀 정리해 주세요.
 
 
원하지 않는 게시판은 빼고 넣거나....
 
게시판의 순서도 마음대로 조정 가능 한 걸로 나오는데.....
 
어렵네요.
 
 
 
플록님이나 rolo님이 올려주신 소스 몇 가지 살펴봤는데....
 
초보에게는 좀 무리더라구요.....
 
설명이 어려우시면 그냥 파일로 만들어서 올려주시면 감사히 받겠습니다.
 
제가 가진 포인트 얼마 안되지만 다 드려요....
 
그럼, 즐거운 저녁 되세요.
 
예제 사이트 처럼 원합니다.

댓글 전체

도움이 되실지 모르겠지만 링크 하신곳과 비슷한 원리 이므로 주석설명을 참조 바랍니다.

참고로 상단 메뉴와 왼쪽의 그룹별 메뉴는 스킨화 되어 있지만 기능상 상관은 없습니다.


미리보기 : http://kkk.myhome.tv/ahome/bbs/group.php?gr_id=sub2

1, 상단의 그룹별 출력


<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
/////////////////////////////////////////////////////////////////////
$menu_main_skin_path ="{$g4[path]}/include/menu_main/{$configs[cfmenu_skin]}";
?>
<table  width="100%" height="52" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="21" height="52">
<img src="<?=$menu_main_skin_path?>/img/menu_bg_01.gif" width="21" height="52" alt=""></td>
<td background="<?=$menu_main_skin_path?>/img/menu_bg_02.gif"  height="52">
<?
#################################################################
# 그누보드3,4 - 파이어폭스, 아이이 (그누보드3 사용자-아랫쪽 덧붙임)
# 그룹은 가로, 게시판은 세로 배열된 속칭 자동메뉴
# 해당 그룹이나 게시판으로 이동시 스타일값이 적용되므로 개인에 맞게 수정
# 소스가운데 gr_id=>gr_id로 변경, 경로는 적절히 필요한 대로 변경
#게시판 정열순서는 검색순
# 피드백 http://gnusr.com/g4/bbs/tb.php/future/10
#################################################################

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

$gr_height = 27; // 그룹 메뉴 높이
$bo_layer_top = 15;  // 보드 레이어 상단 위치 그룹메뉴 높이1/2 정도
$bo_layer_left = -120;  // 보드 레이어 왼쪽마진
$bo_layer_width = 120;// 보드 레이어 너비
$bo_layer_tr_height = 20; // 보드 레이어 높이
$bo_layer = ""; // 보드 레이어 임시저장 변수

echo "<table width='100%' height='{$gr_height}' border='0' cellpadding='0' cellspacing='0'><tr>\n";

// 그룹 접근 권한에 따라 그룹메뉴 보이기 여분필드 gr_1 순으로 정렬
$sql = " SELECT a.gr_id, a.gr_subject, a.gr_use_access, b.mb_id FROM $g4[group_table] AS a LEFT JOIN $g4[group_member_table] AS b ON a.gr_id = b.gr_id WHERE  (b.mb_id = '$member[mb_id]' AND a.gr_use_access = '1' ) OR a.gr_use_access = '0'  ORDER BY a.gr_1";
// 제외그룹설정 root님 콤마로 구분하여 입력
$sql = " select * from $g4[group_table] where gr_id not in ('html', 'banner', 'guest') order by gr_1";

$result = sql_query($sql);
while ($row=mysql_fetch_array($result)) {
{
//그룹링크
$gr_href = "<table width=100% height=38 cellpadding='0' cellspacing='0'><tr><td align=center><a href='$g4[bbs_path]/group.php?gr_id=$row[gr_id]' class='on' onfocus='this.blur()'><b>$row[gr_subject]</b></a></td><td width=1></td></tr></table>";
$gr_href_on = "<table width=100% height=52 cellpadding='0' cellspacing='0'><tr><td WIDTH=16 HEIGHT=52><IMG SRC='$menu_main_skin_path/img/main_a_01.gif' WIDTH=16 HEIGHT=52 border=0></td><td align=center  background='$menu_main_skin_path/img/main_a_02.gif'><a href='$g4[bbs_path]/group.php?gr_id=$row[gr_id]' class='menu_on' onfocus='this.blur()'><font color=#FF8000><b>$row[gr_subject]</b></font></a></td><td WIDTH=15 HEIGHT=52><IMG SRC='$menu_main_skin_path/img/main_a_03.gif' WIDTH=15 HEIGHT=52 border=0></td></tr></table>";
// 그룹별 보드 표시
$bo_layer = "";
$m_over = "";
$m_out  = "";
$menulayer_id  = "";

// 게시판 목록보기 권한설정순 정렬
$sql2 = " SELECT bo_subject, bo_table from $g4[board_table] where (bo_list_level <= $member[mb_level]) and (gr_id = '$row[gr_id]') order by bo_order_search ";
$result2 = sql_query($sql2);
for ($j=0; $row2=mysql_fetch_array($result2); $j++) {
$bo_layer .= "<tr height='$bo_layer_tr_height'><td style='border-bottom-width:1;border-bottom-color:#dddddd;border-bottom-style:dotted;'>";
if ($row2[bo_table] == $bo_table)
$bo_layer .= "<IMG SRC='$menu_main_skin_path/img/bullet.gif' WIDTH=22 HEIGHT=11 border=0><a href='$g4[bbs_path]/board.php?bo_table=$row2[bo_table]' class='off' onfocus='this.blur()'>{$blue_bullet}{$row2[bo_subject]}</a></td></tr>";
else
$bo_layer .= "<IMG SRC='$menu_main_skin_path/img/bullet.gif' WIDTH=22 HEIGHT=11 border=0><a href='$g4[bbs_path]/board.php?bo_table=$row2[bo_table]' class='on' onfocus='this.blur()'>$row2[bo_subject]</a></td></tr>";
}
mysql_free_result($result2);
if ($bo_layer) {
$m_over = "menulayer_{$row[gr_id]}.style.display=''; ";
$m_out  = "menulayer_{$row[gr_id]}.style.display='none'; ";
$menulayer_id  = "menulayer_{$row[gr_id]}";
}

if ($row[gr_id] == $gr_id)
echo "<td width=130 align='center' onmouseover=$m_over onmouseout=$m_out height='$gr_height' class='top_menu_btn'>$gr_href_on</td>\n";
else
echo "<td width=130 align='center' onmouseover=$m_over onmouseout=$m_out height='$gr_height' class='top_menu_btn'>$gr_href</td>\n";
//echo $line_shadow;
}
// 보드 레이어 위치 설정
//$pos = $bo_layer_top + ($bo_layer_tr_height);
//$pos = $bo_layer_top + ($bo_layer_tr_height * ($i-100));
if ($bo_layer) {
//echo "<td>";absolute
echo "<td>";
echo "<div id='{$menulayer_id}' style='margin-top:{$bo_layer_top}px; margin-left:{$bo_layer_left}px; width:{$bo_layer_width}px; display:none; position:absolute;'>";
echo "<table border=0 cellpadding=2 cellspacing=0  bgcolor=#5E92B3  width=100% onmouseover=$m_over onmouseout=$m_out><tr><td>";
echo "<table border=0 width=100%  bgcolor=#5E92B3>$bo_layer</table>";
echo "</td></tr></table>";
echo "</div>";
echo "</td>\n";
//echo "</td></tr><tr>\n";
}
}
echo "</tr></table>\n";

mysql_free_result($result);
?>
</td>
<td width="20" height="52">
<img src="<?=$menu_main_skin_path?>/img/menu_bg_03.gif" width="20" height="52" alt=""></td>
</tr>
</table>
<style>
a.on:link, a.on:visited, a.on:active { /*해당 그룹 강조*/
color:#ffffff;
}
a.on:hover { /*마우스를 올렸을때 폰트 및 배경색상*/
color:#ff9933;
}

a.off:link, a.off:visited, a.off:active { /*일반 그룹*/
color:#ff9988;
}
a.off:hover { /*마우스를 올렸을때 폰트 및 배경색상*/
color:#bb00dd;
}
</style>
왼쪽의 그룹별 분류 (카데고리 자동 출력)

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
/////////////////////////////////////////////////////////////////////
$menu_left_skin_path ="{$g4[path]}/include/menu_left/{$configs[cftop_skin]}";
?>
<div style='height:10px;'></div>
<table style="border-collapse:collapse;" align="center" cellpadding="0" cellspacing="0" width="190">
    <tr>
        <td width="190" height="5" colspan="3">
            <p><img src="<?=$menu_left_skin_path?>/img/outline_top.gif" width="190" height="5" border="0"></p>
        </td>
    </tr>
    <tr>
        <td width="5" background="<?=$menu_left_skin_path?>/img/outline_left.gif">
        </td>
        <td width="180" align="center">

<table id="Table_01" width="180"  border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign=top>
<table id="Table_01" width="180"  border="0" cellpadding="0" cellspacing="0">
<tr>
<td height=30 bgcolor=#73BD47>
<table id="Table_01" width="180"  border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" height=30 background="<?=$menu_left_skin_path?>/img/sub_menu_blank.gif">
&nbsp;&nbsp;<font color="white"><b>:::</b></font>
<?
  if($group[gr_subject]!='')  {
echo "<font color='white'><b>$group[gr_subject]</font></b>";
  }
  else {
          echo "<font color='white'><b>HOME</b></font>";
        }
?>
</td>

</tr></table>
</td>

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

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

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

#bcRFV_sub { /*분류 영역*/
position:relative;
border-right:0px dotted gray;
border-bottom:0px dotted #E7E3E7;
border-left:0px dotted gray;
}
a.bcRFV_sub_subject { /*분류제목 링크 스타일*/
width:165px; /*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 9px/9px arial;
color:red;
}
.newc {
font: oblique 12px/15px arial;
}
</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 = "<IMG SRC='$menu_left_skin_path/img/img47.gif' WIDTH=20 HEIGHT=9 border=0>";

$list = array();

//제외시키고자 하는 게시판을 수동으로 추가
$exc = "('gm11_b1', '게시판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;'>&nbsp;Total:" . $menu_size . "</span>";

?>

<?

//## 게시판 목록
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'><img src='$g4[path]/skin/latest/basic/img/icon_new.gif' border='0' width='14' height='6' align=absmiddle>(" . $bn_count . '/' . $bn_countc . ")</span>";
        }else{
            $new = "";
            }
 
    foreach( $value['sca'] as $category) {//분류가 있고 분류사용 체크된 게시판 별도표시
        $sicon = "";
        if (!($value['bo_use_category'] == "1") &&! ($category))
  {
  if ($key == $bo_table){
  $sicon = "<IMG SRC='$menu_left_skin_path/img/page2.gif' WIDTH=14 HEIGHT=14 align='absmiddle' border=0>&nbsp;"; //분류가 없을 때 출력아이콘
  }
  else
  {
  $sicon = "<IMG SRC='$menu_left_skin_path/img/page.gif' WIDTH=14 HEIGHT=14 align='absmiddle' border=0>&nbsp;"; //분류가 없을 때 출력아이콘
  }
  }
  elseif ($key == $bo_table)
  {
    $sicon = "<IMG SRC='$menu_left_skin_path/img/bullet.gif' WIDTH=15 HEIGHT=13 align='absmiddle' border=0>&nbsp;"; //분류가 있고 활성화된 게시판일 때 출력아이콘
  }
  else
  {
    $sicon = "<IMG SRC='$menu_left_skin_path/img/folder2.gif' WIDTH=15 HEIGHT=13 align='absmiddle' border=0>&nbsp;"; //분류가 있고 비활성된 게시판일 떼 츨력아이콘
  }
    }

  $style = "";
    if ($key == $bo_table)//해당 게시판 강조
{
    $style = "style='font-weight:bold; color:red;'";
} else {
    $style = "style='font-weight:bold;'";
}
    $bo_subject = "<span $style>" . cut_str(get_text($value['bo_subject']),20,"") . "</span>" ;
 
    ?>
<a href='<?=$g4[bbs_path]?>/board.php?bo_table=<?=$key?>' class='bcRFV_board_subject' onfocus='this.blur()'><?=$sicon?><?=$bo_subject?></a>
<div id='bcRFV_sub'>
<?

    //분류(카테고리)목록 세로배열
    $bo_width = 100;//전체 너비 %
    $cols = 1;//세로 칼럼수
    $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 = "&nbsp;<span class='new'>(" . $cn_count . '/' . $cn_countc . ")<img src='$g4[path]/skin/latest/basic/img/icon_new.gif' border='0' width='14' height='6' align=absmiddle></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),30,"") . "</span>";

        ?>
<div style="width:150; 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>
        </div>
<?

        if ($cnt == $cols){
            $cnt = 0;
          ?>
  </div>
  <?
            }

        $cnt++;
       
        }//foreach
      ?>
</div>
<?
      }//if
    ?>
</div></div>
<?
  }//foreach 주메뉴 끝
?></div><!-- bcRFV_global end -->
<div style='clear: both;'></div>
 

 </td>

</tr>
</table>

        </td>
        <td width="5" background="<?=$menu_left_skin_path?>/img/outline_right.gif">
        </td>
    </tr>
    <tr>
        <td width="190" height="5" colspan="3">
            <p><img src="<?=$menu_left_skin_path?>/img/outline_bottom.gif" width="190" height="5" border="0"></p>
        </td>
    </tr>
</table>
<style>td{cursor:hand}</style>

<script>
function menuOn(name) {
 submenu = eval("submenu"+name+".style");
 submenu.visibility = "visible";
}
function menuOff(name) {
 submenu = eval("submenu"+name+".style");
 submenu.visibility = "hidden";
}
</script>
 
<table bgcolor=dddddd width=180 height=30 cellpadding=0 cellspacing=0>
 <tr>
  <td align=center onMouseOver="menuOn(1)" onMouseOut="menuOff(1)">
  <b>Menu1</b></td>
  <td align=center onMouseOver="menuOn(2)" onMouseOut="menuOff(2)">
  <b>Menu2</b></td>
 </tr>
</table>
 
<span id="submenu1" onMouseOver="menuOn(1)" onMouseOut="menuOff(1)" style="position:absolute; left:10; top:45; visibility:hidden; background-color:eeeeee">
 <table cellpadding=0 cellspacing=0>
  <tr><td>subMenu1_1</td></tr>
  <tr><td>subMenu1_2</td></tr>
 </table>
</span>
 
<span id="submenu2" onMouseOver="menuOn(2)" onMouseOut="menuOff(2)" style="position:absolute; left:100; top:45; visibility:hidden; background-color:eeeeee">
 <table cellpadding=0 cellspacing=0>
  <tr><td>subMenu2_1</td></tr>
  <tr><td>subMenu2_2</td></tr>
 </table>
</span>

테이블안에 이미지를 빽그라운드 or 이미지로 넣어도 됩니다....
헐랭이님 정말 많은 도움이 되었어요....
우선 익숙하지 않은 소스라 분석해 보고 적용해 볼께요...
시간이 많이 걸릴 것 같네요....

잘 모르는 부분 질문해도 돼죠?? *^^*
전체 66,558 |RSS
그누4 질문답변 내용 검색

회원로그인

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