테스트 사이트 - 개발 중인 베타 버전입니다

목록 읽기 권한에 따라 자동으로 메뉴 생성하기..

정말 허접한 실력으로 필요에 의해 만들었습니다.
head.php 공개하신거랑.. 여기저기 다른 소스들이랑 합쳐서 만들어 봤습니다.
필요하신분들 사용해 보세요.

고수님들이 더 이쁘고 쉽게 만들어 주시면 감사하겠습니다.
head.php에 sir 싸이트의 맨위 파란색 메뉴부분 입니다.

-- 소스 시작 --
<script language="JavaScript">
ns = (document.layers)? true:false
ie = (document.all)? true:false

function show(id) {
if (ns) document.layers[id].visibility = "visible"
else if (ie) document.all[id].style.visibility = "visible"
}

function hide(id) {
if (ns) document.layers[id].visibility = "hidden"
else if (ie) document.all[id].style.visibility = "hidden"
}
</script>

<table align=center width=900 style="border:#B0C0E8 2px solid; background-color:#6880D8;"><tr><td>
<div style="float:left; width:220px;"></div>
<div style="position:relative; top:0; left:0;">
<?
// Main menu
$sql = " select a.gr_id, a.gr_subject from $g4[group_table] as a left join $g4[board_table] as b on a.gr_id = b.gr_id where b.bo_list_level <= $member[mb_level] group by gr_id ";
$result = sql_query($sql);

for ($i=0; $row=sql_fetch_array($result); $i++){ ?>
<div style="float:left; width:120px;position:relative;">
<div style="padding-top:5px; color:white; font: bolder larger; height:25px; text-align:center; " onmouseover="show('<?=$row[gr_id]?>')" onmouseout="hide('<?=$row[gr_id]?>')"><?=$row[gr_subject]?></div>
<?
// Sub menu
?>
<div id="<?=$row[gr_id]?>" style="border: #9DADE5 1px solid; background-color:#F6FAFF; padding:5 5 5 5; visibility:hidden; position:absolute;" onmouseover="show('<?=$row[gr_id]?>')" onmouseout="hide('<?=$row[gr_id]?>')">
<?
$sql1 = " 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_subject ";
$result1 = sql_query($sql1);
for ($i1=0; $row1=sql_fetch_array($result1); $i1++) {
?>
<div style="height:22px; padding-left:10px; padding-right:10px;" ><a href='<?=$g4[path]?>/bbs/board.php?bo_table=<?=$row1[bo_table]?>'><?=$row1[bo_subject]?></a></div>
<? }
echo "</div>"; // Sub menu div 닫기
echo "</div>"; // Main menu div 닫기
}
?>
</div>
</td></tr>
</table>
<div style="height:5px;"></div>

-- 소스 끝 --

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 16개

메뉴가 어려워 보이던데..
이렇게 하니까 정말 좋습니다.
좋은팁 감사 합니다.
깔끔한 아이디어가 좋습니다.

안타깝게도, 불여우에서 게시판 목록이 보여지지 않습니다.

고수님께서 한 번 봐주시면 좋겠습니다.
멋진 팁입니다.
깔끔해서 더더욱 좋네요.
테스트해보니 아주 좋은 팁입니다.
메뉴구성시 유용하게 사용될 것 같네요.
상단메뉴제목은 그룹명으로 처리하는 것 같은 데....
좋은 정보 감사드립니다.
좋게 평가해 주셔서 감사합니다.
하나 문제점을 발견했는데요..
Basic 최근게시물에 들어가면 카테고리 선택하는게 있더군요. 그런데 그게 레이어 처럼 상위에 나타난다는 것입니다.
제가 올린 소스에서 z-index 를 아무리 높여도 안되더군요.
왜 그럴까요? Basic 소스를 봐도 그부분은 레이어가 아닌듯 하던데 말이에요.
혹시 원인과 해결책을 아시는분 알려주시면 감사하겠습니다.
우와... 해보고 놀랐습니다.
이렇게 메뉴를 만드는군요.. 존경스럽습니다 ^^;;
sir 의 head.php를 보고 엄두가 않난는데...
테스트 해보고 용기를내 적용해 볼까 합니다.
감사합니다.
$sql = " select a.gr_id, a.gr_subject from $g4[group_table] as a left join $g4[board_table] as b on a.gr_id = b.gr_id where b.bo_list_level <= $member[mb_level] group by gr_id ";

$sql1 = " 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_subject ";

어떤분이.. 순서를 수동으로 조작이 가능하게 해달라고 하시는 질답을 봐서
그냥.. 팁에 적기도 민망해서.. 끝에 달아 놓습니다.
sql의 명령어에는 order by라는게 있는데 말그대로.. 정렬쪽에 쓰입니다.
그리고 테이블 번호를 알면되는데요..
group by gr_id "; 위에 있는 녀석은 메뉴의 제목을 가져오는데.. 여기서.. gr_id의 순서입니다.
그러면.. 자신의 수서로 하자면.. group by gr_1 로 해서 gr_1의..필드
그룹의 여유필드 첫번째에.. 10 / 20 / 30 원하는 값들을.. 넣어주시면.. 그 순서로 정렬이 됩니다.
행여나를 위해서 group by gr_1+0 도 괜찮습니다.

order by bo_subject "; 는.. 게시판의 순서를.. 제목순으로 댕겨오는데요.
order by bo_order_search 이렇게 고쳐서 검색순서순으로 땡겨오고..
당연히 게시판의 검색순서를 적당히 넣어주시면 됩니다.
네스케이프.. 아니다. 파이어 폭스에 안된다고.. 그래서.. 어쩔수 없이 좀 찾았습니다.
원인은.. 뭐 알력정도라고 생각되고요.. 초기 자바루틴을 바꾸어 주어야 되더군요.. 이젠 저런 루틴이 안먹히겠습니다. http://www.sc8000.net/gn/bbs/tb.php/design_gn/24 참고글...에서 링크를 누르시면
나올겁니다.

하여간 결국 위에 자바 코딩을
<script language="JavaScript">

function getObject(objectId) {
// checkW3C DOM, then MSIE 4, then NN 4.
//
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;
}
}

function show(id) {
getObject([id]).style.visibility="visible";
}
function hide(id) {
getObject([id]).style.visibility="hidden";
}

</script>

요렇게 치환하세요.. 그럼.. 파이어폭스에서도 됩니다.
감사합니다....
불여우에서 안되어서 포기하려고 했었는데....^^
음....이런 기능들도 있군요....^^
멋진 메뉴네요 스크랩해두겠습니다 감사합니다..
와.. 좋습니다. ^^
메뉴만들기, 저같은 초보에겐 딱입니다.
좋은 팁 감사합니다.
감사합니다. ^^*

게시판 목록

그누4 팁자료실

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