자동메뉴 서브메뉴없이 깔끔하게 만들기???
본문
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
/////////////////////////////////////////////////////////////////////
// FF,msie호환 그룹 및 게시판 자동메뉴 - 플록
// CSS로 구현 그룹 및 게시판의 수직,수평 배열의 융통성 확보
echo "<div id='global'>\n";
//접근가능그룹 여분필드 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님
// html , banner , guest 라는 그룹은 제외시킴
$sql = " select * from $g4[group_table] where gr_id not in ('html', 'banner', 'z7') order by gr_1";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++){
//group
echo "<div id='group'>\n";
if ($row[gr_id] == $gr_id) {// 해당 그룹 스타일 및 링크
echo "<span class='group_subject' onmouseover=\"show('$row[gr_id]')\" onmouseout=\"hide('$row[gr_id]')\"><a href='$g4[bbs_path]/board.php?bo_table=$row[gr_id]_1' class='on' >$row[gr_subject]</a></span>\n";
} else { // 그외 그룹 스타일 및 링크
echo "<span class='group_subject' onmouseover=\"show('$row[gr_id]')\" onmouseout=\"hide('$row[gr_id]')\"><a href='$g4[bbs_path]/board.php?bo_table=$row[gr_id]_1' class='off' >$row[gr_subject]</a></span>\n";
}
echo "<div id='$row[gr_id]' class='board' onmouseover=\"show('$row[gr_id]')\" onmouseout=\"hide('$row[gr_id]')\">\n";
//게시판 권한 설정 적용, 전체 검색사용에 체크된 게시판만 검색순서에 따라 추출
$sql1 = " select bo_subject, bo_table from $g4[board_table] where (bo_list_level <= $member[mb_level]) and (gr_id = '$row[gr_id]') and bo_use_search = '1' order by bo_order_search";
$result1 = sql_query($sql1);
for ($i1=0; $row1=sql_fetch_array($result1); $i1++) {
//해당 게시판일때 스타일 적용
if ($row1[bo_table] == $bo_table){
echo "<span class='board_subject'><a href='$g4[bbs_path]/board.php?bo_table=$row1[bo_table]' class='on'><img src='$g4[path]/include/mainmenu/img/mmenu_icon.gif' border=0> $row1[bo_subject]</a></span>\n";
}else{ //나머지 게시판의 스타일
echo "<span class='board_subject'><a href='$g4[bbs_path]/board.php?bo_table=$row1[bo_table]' class='block'><img src='$g4[path]/include/mainmenu/img/mmenu_icon.gif' border=0> $row1[bo_subject]</a></span>\n";
}
echo "</div>\n"; //board end
echo "</div>\n"; //group end
}
echo "</div>\n"; // global menu end
echo "<div style='clear: both;'></div>"; // 메뉴끝 줄 바꿈, 겹치기 방지
?>
function getObject(objectId) {
// checkW3C DOM, then MSIE 4, then NN 4. pearly님 공개 소스코드
if(document.getElementById && document.getElementById(objectId)) {
return document.getElementById(objectId);
}
else if (document.all && document.all(objectId)) {
return document.all(objectId);
}
else if (document.layers && document.layers[objectId]) {
return document.layers[objectId];
} else {
return false;
}
}
getObject([id]).style.visibility="visible";
}
getObject([id]).style.visibility="hidden";
}
</script>
/*여기서부터 시각적인 부분에 대한 수정을 해봅니다.
아래 소스에서 float, width 처럼 파란색으로 보여지는 속성을 키워드로
CSS 도움말 파일(팁&강좌에 있음)에서 검색해보면서 해당속성에 대한 옵션을 익힙니다.*/
float:center;/*왼쪽정렬*/
width:100%;/*너비 필요시 300px 혹은 300 처럼 픽셀로 지정가능*/
height:35px;/*메뉴 전체높이*/
margin:0 0 0 0; /*외부여유 - 시계방향 top, right, bottom, left 공통*/
padding:0 0 0 0;/*내부여유*/
border-width:0 0 0 0;/*테두리 두께*/
border-style:solid;/*테두리 스타일 dotted등 여러 스타일을 줄수있음*/
border-color:transparent/*테두리 색상 #000000처럼 주어도 무방*/;
background-color:transparent/*배경 색상 마찬가지*/;
position:relative;/*absolute; top:22; left:0; 상대,절대위치 설정 - 이곳 메뉴에서는 그대로 두고 메뉴를 불러오는 문서에서 전체 위치를 잡
아주면 됩니다*/
}
float:left;
width:100; overflow:visible;/*그룹메뉴 너비, overflow:visible; 내용이 넘칠경우 영역을 밀어내며 표시됨 - 그외 여러옵션이 있음*/
height:35px;
padding:0 0 0 0;
border-width:0 0 0 0;
border-style:solid;
border-color:transparent;
background-color:transparent; /*배경투명*/
position:relative; top:0; left:0;
}
.group_subject { /*그룹제목 스타일*/
padding-top:0px;
color:silver;
font-weight:bold;
height:35px;
text-align:center;
cursor:pointer;
display:block;
}
border-width:1 1 1 1; /*서브메뉴 테두리두께*/
border-style:solid;
border-color:#999999; /*서브메뉴 테두리 칼라*/
background-color:#ffffff;
padding:0 0 3 0;
visibility:hidden;
position:absolute; top:17; left:5;
}
height:15px;
width:150px;
padding:6 0 2 10;
border-bottom-width:1;
border-bottom-color:#dddddd; /*서브메뉴 구분선*/
border-bottom-style:dotted;
display:block; /*포인터 영역 확대*/
}
width:100%; /*block 설정시 너비 빼먹으면 msie에서 안먹힘*/
height:100%;
display:block; /*포인터 영역 확대*/
}
color:#e8ae11;
}
a.on:hover { /*마우스를 올렸을때 폰트 및 배경색상*/
color:#e8ae11;
background-color:transparent;
padding:0 0 0 0;
}
a.off:link, a.off:visited, a.off:active { /*일반 그룹*/
color:#ffffff;
}
a.off:hover { /*마우스를 올렸을때 폰트 및 배경색상*/
color:#e8ae11;
background-color:transparent;
padding:0 0 0 0;
}
</style>
댓글목록 5
연후아빠님의 댓글
연후아빠쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<?
$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";
$sql = " select * from $g4[group_table] where gr_id not in ('html', 'banner', 'guest') order by gr_1";
//$sql = " select gr_id, gr_subject from $g4[group_table] where gr_id not in ($except) order by gr_subject desc ";
$rst1 = sql_query($sql);
while ($row=sql_fetch_array($rst1)) {
if($cells%6==0)
echo "</tr><tr>";
echo "<td valign='top' align='center'>";
echo "<table width='80' cellpadding='0' cellspacing='0' border='0'>";
echo "<tr><td align='center' height='30'><strong><a href='$g4[bbs_path]/group.php?gr_id=$row[gr_id]'><font color=#ffffff>$row[gr_subject]</font></a></strong></td></tr>"; // 그룹명 출력
$sql2 = " select * from $g4[board_table] where gr_id = '$row[gr_id]' order by bo_order_search ";
$rst2 = sql_query($sql2);
$cells++;
echo "</table>";
echo "</td>";
}
?>
</tr>
</table>
이걸로 사용해 보세요~
성젬님의 댓글
성젬쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일
<div id='zbase'>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<?
//접근가능그룹 여분필드 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";
$sql = " select * from $g4[group_table] where gr_id not in ('html', 'banner', 'guest') order by gr_1";
//$sql = " select gr_id, gr_subject from $g4[group_table] where gr_id not in ($except) order by gr_subject desc ";
$rst1 = sql_query($sql);
while ($row=sql_fetch_array($rst1)) {
if($cells%6==0)
echo "</tr><tr>";
echo "<td valign='top' align='center'>";
echo "<table width='80' cellpadding='0' cellspacing='0' border='0'>";
echo "<tr><td align='center' height='30'><strong><a href='$g4[bbs_path]/group.php?gr_id=$row[gr_id]'><font color=#ffffff>$row[gr_subject]</font></a></strong></td></tr>"; // 그룹명 출력
$sql2 = " select * from $g4[board_table] where gr_id = '$row[gr_id]' order by bo_order_search ";
$rst2 = sql_query($sql2);
$cells++;
echo "</table>";
echo "</td>";
}
?>
</tr>
</table>
</div>
이렇게 하니 잘됩니다
연후아빠님의 댓글
연후아빠쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일확인해보지 못했습니다..
//board
echo "<div id='$row[gr_id]' class='board' onmouseover=\"show('$row[gr_id]')\" onmouseout=\"hide('$row[gr_id]')\">\n";
//게시판 권한 설정 적용, 전체 검색사용에 체크된 게시판만 검색순서에 따라 추출
$sql1 = " select bo_subject, bo_table from $g4[board_table] where (bo_list_level <= $member[mb_level]) and (gr_id = '$row[gr_id]') and bo_use_search = '1' order by bo_order_search";
$result1 = sql_query($sql1);
for ($i1=0; $row1=sql_fetch_array($result1); $i1++) {
//해당 게시판일때 스타일 적용
if ($row1[bo_table] == $bo_table){
echo "<span class='board_subject'><a href='$g4[bbs_path]/board.php?bo_table=$row1[bo_table]' class='on'><img src='$g4[path]/include/mainmenu/img/mmenu_icon.gif' border=0> $row1[bo_subject]</a></span>\n";
}else{ //나머지 게시판의 스타일
echo "<span class='board_subject'><a href='$g4[bbs_path]/board.php?bo_table=$row1[bo_table]' class='block'><img src='$g4[path]/include/mainmenu/img/mmenu_icon.gif' border=0> $row1[bo_subject]</a></span>\n";
}
}
echo "</div>\n"; //board end
게시판을 관할하는 부분입니다~!