그누 포인트 게임입니다. 매주 한개씩 공개합니다. 모바일 지원합니다. 1. score 게시판 생성 save.php에 보면 score 게시판명 넣는 것이 나옵니다. 아래처럼 나오...
기본템플릿과 코드에서 3차메뉴기능만 추가해보았습니다
그누보드 버전은 5.4.3입니다
3차메뉴 기능이 필요해서 스킨을 찾아봤는데 만족스러운 스킨을 찾기가 힘들어서(그냥 메뉴코드는 2차인데 하드 php코딩으로 3차인것처럼 보이게 한다던지..., menu테이블에 depth데이터를 따로 추가한 버전도 있었는데 먼가 엉성했습니다)
기존의 그누보드 메뉴 생성방식이 먼가 차수를 늘리기엔 불친절하게 되어있긴 하지만 그냥 오기생겨서 차수를 3차로 추가해보았습니다
원래 메뉴 코드가 1차 10 2차 1010 이런식으로 생성되는데 3차는 이런식으로 같은코드로 하려면 너무 복잡해져서 1차 100 2차 10010 3차 100101 이런식으로 붙여지는 코드 자릿수를 바꿔서 구분을 뒀습니다
4차도 1000 100 10 1 이런식으로 만들면 가능하겠지만 구조가 아주.. 그냥 차수를 유동적으로 늘릴 수 있는 메뉴관리를 새로 만드는게 더 빠르지 않을까 싶어욥
관리자 메뉴쪽 코드들이 그렇게 깔끔하지는 않습니다 허헛.. 그냥 기능 구현에만 충실하게 만들어서
덮어 씌울 파일
js/jquery.menu.js
adm/menu_form.php
adm/menu_list.php
adm/menu_list_update.php
adm/admin.css 추가할 부분

3차메뉴는 2차메뉴보다 더 왼쪽에서 떨어져 보이기 위한 css
#menulist .two_sub_menu_class {padding-left:40px;background:url('../img/sub_menu_ico.gif') 20px 15px no-repeat}
css/default.css 추가할 부분

화면 3차메뉴 css
.gnb_2dli {position:relative;}
.gnb_2dli .bg {position:absolute;top:15px;right:8px;display:inline-block;width:10px;height:10px;overflow:hidden;background:url('../img/btn_next.gif') no-repeat 50% 50%;text-indent:-999px}
.gnb_3dul {display:none;position:absolute;top:-2px;left:138px;min-width:140px;padding-top:2px}
.gnb_3dul .gnb_3dul_box {border:1px solid #e0e2e5;border-top:0;padding:0;
-webkit-box-shadow:0px 1px 5px rgba(97, 97, 97, 0.2);
-moz-box-shadow:0px 1px 5px rgba(97, 97, 97, 0.2);
box-shadow:0px 1px 5px rgba(97, 97, 97, 0.2)}
.gnb_3da {display:block;padding:0 10px;line-height:40px;background:#fff;color:#080808;text-align:left;text-decoration:none}
a.gnb_3da:hover {color:#3a8afd;background:#f7f7f8;
-moz-transition:all 0.3s ease-out;
-o-transition:all 0.3s ease-out;
transition:all 0.3s ease-out}
.gnb_2dli_air .gnb_3da {}
.gnb_2dli_on .gnb_3da {}
.gnb_3da:focus, .gnb_3da:hover {color:#fff}
.gnb_2dli_over .gnb_3dul {display:block;}
.gnb_2dli_over2 .gnb_3dul {display:block;right:0}
전체메뉴 css
#gnb_all .gnb_al_li li>ul>li {line-height:1.5em;font-size:0.8em;}
#gnb_all .gnb_al_li li>ul>li a {color:#777}
lib/get_data.lib.php 추가할 부분

php함수들 중에서 get_menu_db 함수에 3차메뉴를 배열에 넣는 부분만 추가하면 됩니다
function get_menu_db($use_mobile=0, $is_cache=false){
global $g5;
static $cache = array();
$cache = run_replace('get_menu_db_cache', $cache, $use_mobile, $is_cache);
$key = md5($use_mobile);
if( $is_cache && isset($cache[$key]) ){
return $cache[$key];
}
$where = $use_mobile ? "me_mobile_use = '1'" : "me_use = '1'";
if( !($cache[$key] = run_replace('get_menu_db', array(), $use_mobile)) ){
$sql = " select *
from {$g5['menu_table']}
where $where
and length(me_code) = '3'
order by me_order, me_id ";
$result = sql_query($sql, false);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$row['ori_me_link'] = $row['me_link'];
$row['me_link'] = short_url_clean($row['me_link']);
$cache[$key][$i] = $row;
$sql2 = " select *
from {$g5['menu_table']}
where $where
and length(me_code) = '5'
and substring(me_code, 1, 3) = '{$row['me_code']}'
order by me_order, me_id ";
$result2 = sql_query($sql2);
for ($k=0; $row2=sql_fetch_array($result2); $k++) {
$row2['ori_me_link'] = $row2['me_link'];
$row2['me_link'] = short_url_clean($row2['me_link']);
$cache[$key][$i]['sub'][$k] = $row2;
$sql3 = " select *
from {$g5['menu_table']}
where $where
and length(me_code) = '6'
and substring(me_code, 1, 3) = '{$row['me_code']}'
and substring(me_code, 1, 5) = '{$row2['me_code']}'
order by me_order, me_id ";
$result3 = sql_query($sql3);
for ($j=0; $row3=sql_fetch_array($result3); $j++) {
$row3['ori_me_link'] = $row3['me_link'];
$row3['me_link'] = short_url_clean($row3['me_link']);
$cache[$key][$i]['sub'][$k]['sub'][$j] = $row3;
}
}
}
}
return $cache[$key];
}
head.php 추가할 부분

3차메뉴가 뜨기위한 php 코드
기존 <li><a></a></li>로 끝나던 2차메뉴 태그 안에
<li><a></a>(3차메뉴 php코드)</li>이런식으로 넣어주면 됩니다
<?php
$j = 0;
foreach( (array) $row2['sub'] as $row3 ){
if( empty($row3) ) {
continue;
}
if($j == 0)
echo '<span class="bg">하위분류</span><div class="gnb_3dul"><ul class="gnb_3dul_box">'.PHP_EOL;
?>
<li class="gnb_3dli"><a href="<?php echo $row3['me_link']; ?>" target="_<?php echo $row3['me_target']; ?>" class="gnb_3da"><?php echo $row3['me_name'] ?></a></li>
<?php
$j++;
} //end foreach $row3
if($j > 0)
echo '</ul>'.PHP_EOL;
?>
전체메뉴도 동일
클래스만 제외되었습니다

<?php
$j = 0;
foreach( (array) $row2['sub'] as $row3 ){
if( empty($row3) ) {
continue;
}
if($j == 0)
echo '<ul>'.PHP_EOL;
?>
<li><a href="<?php echo $row3['me_link']; ?>" target="_<?php echo $row3['me_target']; ?>"><?php echo $row3['me_name'] ?></a></li>
<?php
$j++;
} //end foreach $row3
if($j > 0)
echo '</ul>'.PHP_EOL;
?>
데이터 베이스는 변동사항 없습니다

버전 정보
그누보드5 스킨
좋은 댓글과 좋아요는 제작자에게 큰힘이 됩니다.
파일 크기가 허용 용량을 넘어 분할 압축합니다. 두개를 받아서 푸세요. 그누 포인트 게임입니다. 매주 한개씩 공개합니다. 모바일 지원합니다. 1. score 게시판 생성 s...
그누 포인트 게임입니다. 매주 한개씩 공개합니다. 모바일 지원합니다. 1. score 게시판 생성 save.php에 보면 score 게시판명 넣는 것이 나옵니다. 아래처럼 나오...
유튜브 리스트 플레이어를 보드에 적용해 보았습니다. 게시판 글쓰기에서 아래의 형식으로 기입합니다. playerOrder = 0; headSkin = 1; footSkin =...
그누보드 버전은 5.4.3입니다 3차메뉴 기능이 필요해서 스킨을 찾아봤는데 만족스러운 스킨을 찾기가 힘들어서(그냥 메뉴코드는 2차인데 하드 php코딩으로 3차인것처럼 보이게 한...
근 10년 만에 들어온 것 같네요.ㅜㅠ 플래시 액션질을 주로 하다가 중간에 흥미를 잃고 이러 저러 하던 중 플래시를 거의 못하게 된 상황에서 유튜브 동영상을 좀 만져 보다가 도움이...
그누 포인트 게임입니다. 매주 한개씩 공개합니다. 모바일 지원합니다. 1. score 게시판 생성 save.php에 보면 score 게시판명 넣는 것이 나옵니다. 아래처럼 나오...
이 스킨은 옵션님이 몇년전에 올려주신 것을 제가 사골을 우리고 있습니다... 보들이유님의 오늘 본 게시물 스킨 https://sir.kr/g5_skin/12664 펄스나인님...
그누 포인트 게임입니다. 매주 한개씩 공개합니다. 모바일 지원합니다. 1. score 게시판 생성 save.php에 보면 score 게시판명 넣는 것이 나옵니다. 아래처럼 나오...
댓글 15개
수고 하셨습니다.
수고하셨습니다.
잘쓰겠습니다~~~:)