목록 읽기 권한에 따라 자동으로 메뉴 생성하기.. > 그누4 팁자료실

그누4 팁자료실

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

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

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

본문

정말 허접한 실력으로 필요에 의해 만들었습니다.
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>

-- 소스 끝 --
추천
0

댓글 16개

테스트해보니 아주 좋은 팁입니다.
메뉴구성시 유용하게 사용될 것 같네요.
상단메뉴제목은 그룹명으로 처리하는 것 같은 데....
좋은 정보 감사드립니다.
좋게 평가해 주셔서 감사합니다.
하나 문제점을 발견했는데요..
Basic 최근게시물에 들어가면 카테고리 선택하는게 있더군요. 그런데 그게 레이어 처럼 상위에 나타난다는 것입니다.
제가 올린 소스에서 z-index 를 아무리 높여도 안되더군요.
왜 그럴까요?  Basic 소스를 봐도 그부분은 레이어가 아닌듯 하던데 말이에요.
혹시 원인과 해결책을 아시는분 알려주시면 감사하겠습니다.
$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>

요렇게 치환하세요.. 그럼.. 파이어폭스에서도 됩니다.
전체 40 |RSS
그누4 팁자료실 내용 검색

회원로그인

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