메뉴에 클래스 주기(12.24수정) 정보
메뉴에 클래스 주기(12.24수정)첨부파일
본문
<nav id="gnb">
<h2>메인메뉴</h2>
<div class="gnb_wrap">
<ul id="gnb_1dul">
<li class="gnb_1dli gnb_mnal"><button type="button" class="gnb_menu_btn" title="전체메뉴"><i class="fa fa-bars" aria-hidden="true"></i><span class="sound_only">전체메뉴열기</span></button></li>
<?php
$menu_datas = get_menu_db(0, true);
$gnb_zindex = 999; // gnb_1dli z-index 값 설정용
$i = 0;
foreach( $menu_datas as $row ){
if( empty($row) ) continue;
// 1차 메뉴에 대한 처리
$bo_tablea = basename($row['me_link'], '.php');
// bo_use_search 값을 가져오기 위해 해당 게시판 정보를 조회
$sql = "SELECT bo_use_search FROM {$g5['board_table']} WHERE bo_table = '$bo_tablea'";
$board_info = sql_fetch($sql);
// bo_use_search 값이 0인 경우 해당 메뉴를 출력하지 않음
if ($is_admin !== "super" && isset($board_info['bo_use_search']) && $board_info['bo_use_search'] == '0') {
continue;
}
// 2차 메뉴에서 현재 URL과 일치하는 항목이 있는지 확인
$is_on_class = '';
$sub_menu_active = false;
foreach( (array) $row['sub'] as $row2 ){
if( empty($row2) ) continue;
// 현재 페이지의 URL이 2차 메뉴의 링크와 일치하는지 확인
if (strpos($_SERVER['REQUEST_URI'], $row2['me_link']) !== false) {
$sub_menu_active = true;
break;
}
}
// 1차 메뉴의 링크와 현재 URL이 일치하거나, 2차 메뉴 중 활성화된 것이 있으면 'on' 클래스 추가
if ($sub_menu_active || strpos($_SERVER['REQUEST_URI'], $row['me_link']) !== false) {
$is_on_class = 'on';
}
$add_class = (isset($row['sub']) && $row['sub']) ? 'gnb_al_li_plus' : '';
?>
<li class="gnb_1dli <?php echo $add_class; ?>" style="z-index:<?php echo $gnb_zindex--; ?>">
<a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_1da <?php echo $is_on_class; ?>"><?php echo $row['me_name'] ?></a>
<?php
$k = 0;
foreach( (array) $row['sub'] as $row2 ){
if( empty($row2) ) continue;
// 2차 메뉴에 대한 처리
$sub_bo_table = basename($row2['me_link'], '.php');
// bo_use_search 값을 가져오기 위해 해당 게시판 정보를 조회
$sub_sql = "SELECT bo_use_search FROM {$g5['board_table']} WHERE bo_table = '$sub_bo_table'";
$sub_board_info = sql_fetch($sub_sql);
// bo_use_search 값이 0인 경우 해당 2차 메뉴를 출력하지 않음
if ($is_admin !== "super" && isset($sub_board_info['bo_use_search']) && $sub_board_info['bo_use_search'] == '0') {
continue;
}
// 2차 메뉴의 활성화 상태 확인
$sub_is_on_class = (strpos($_SERVER['REQUEST_URI'], $row2['me_link']) !== false) ? 'on' : '';
if($k == 0)
echo '<span class="bg">하위분류</span><div class="gnb_2dul"><ul class="gnb_2dul_box">'.PHP_EOL;
?>
<li class="gnb_2dli"><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="gnb_2da <?php echo $sub_is_on_class; ?>"><?php echo $row2['me_name'] ?></a></li>
<?php
$k++;
} //end foreach $row2
if($k > 0)
echo '</ul></div>'.PHP_EOL;
?>
</li>
<?php
$i++;
} //end foreach $row
if ($i == 0) { ?>
<li class="gnb_empty">메뉴 준비 중입니다.<?php if ($is_admin) { ?> <a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 > 환경설정 > 메뉴설정</a>에서 설정하실 수 있습니다.<?php } ?></li>
<?php } ?>
</ul>
<div id="gnb_all">
<h2>전체메뉴</h2>
<ul class="gnb_al_ul">
<?php
$i = 0;
foreach( $menu_datas as $row ){
// 1차 메뉴의 링크가 현재 페이지의 URL과 일치하는지 확인
$is_on_class = '';
if (strpos($_SERVER['REQUEST_URI'], $row['me_link']) !== false) {
$is_on_class = 'on';
}
// 2차 메뉴에서 현재 페이지와 일치하는 메뉴가 있는지 확인하여 1차 메뉴에 on 클래스 적용
foreach( (array) $row['sub'] as $row2 ){
if( empty($row2) ) continue;
// 현재 페이지의 URL이 2차 메뉴의 링크와 일치하는지 확인
if (strpos($_SERVER['REQUEST_URI'], $row2['me_link']) !== false) {
$is_on_class = 'on';
break; // 일치하는 2차 메뉴가 있으면 더 이상 확인할 필요 없음
}
}
// 1차 메뉴의 bo_use_search 값을 확인하여 표시할지 결정
$bo_tablea = basename($row['me_link'], '.php');
$sql = "SELECT bo_use_search FROM {$g5['board_table']} WHERE bo_table = '$bo_tablea'";
$board_info = sql_fetch($sql);
// bo_use_search 값이 0인 경우 해당 메뉴를 표시하지 않음
if ($is_admin !== "super" && isset($board_info['bo_use_search']) && $board_info['bo_use_search'] == '0') {
continue;
}
?>
<li class="gnb_al_li">
<a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_al_a <?php echo $is_on_class; ?>"><?php echo $row['me_name'] ?></a>
<?php
$k = 0;
foreach( (array) $row['sub'] as $row2 ){
if($k == 0)
echo '<ul>'.PHP_EOL;
// 2차 메뉴의 bo_use_search 값을 확인하여 표시할지 결정
$sub_bo_table = basename($row2['me_link'], '.php');
$sub_sql = "SELECT bo_use_search FROM {$g5['board_table']} WHERE bo_table = '$sub_bo_table'";
$sub_board_info = sql_fetch($sub_sql);
// bo_use_search 값이 0인 경우 해당 2차 메뉴를 표시하지 않음
if ($is_admin !== "super" && isset($sub_board_info['bo_use_search']) && $sub_board_info['bo_use_search'] == '0') {
continue;
}
// 2차 메뉴의 링크와 현재 페이지의 URL이 일치하는지 확인
$sub_is_on_class = '';
if (strpos($_SERVER['REQUEST_URI'], $row2['me_link']) !== false) {
$sub_is_on_class = 'on';
}
?>
<li><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="gnb_al_b <?php echo $sub_is_on_class; ?>"><?php echo $row2['me_name'] ?></a></li>
<?php
$k++;
} //end foreach $row2
if($k > 0)
echo '</ul>'.PHP_EOL;
?>
</li>
<?php
$i++;
} //end foreach $row
if ($i == 0) { ?>
<li class="gnb_empty">메뉴 준비 중입니다.<?php if ($is_admin) { ?> <br><a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 > 환경설정 > 메뉴설정</a>에서 설정하실 수 있습니다.<?php } ?></li>
<?php } ?>
</ul>
<button type="button" class="gnb_close_btn"><i class="fa fa-times" aria-hidden="true"></i></button>
</div>
<div id="gnb_all_bg"></div>
</div>
</nav>
<style>.gnb_1da.on,.gnb_2da.on, .gnb_al_a.on, .gnb_al_b.on {background:rgba(0,88,255,.01);font-weight:bold !important;color:crimson !important}</style>
head.php의 <nav> ~ </nav>여기에 붙여 넣기 하세요.
<ul id="gnb_1dul">
<?php
$menu_datas = get_menu_db(1, true);
$i = 0;
foreach( $menu_datas as $row ){
if( empty($row) ) continue;
// 1차 메뉴에 대한 처리
$bo_tablea = basename($row['me_link'], '.php');
// bo_use_search 값을 가져오기 위해 해당 게시판 정보를 조회
$sql = "SELECT bo_use_search FROM {$g5['board_table']} WHERE bo_table = '$bo_tablea'";
$board_info = sql_fetch($sql);
// bo_use_search 값이 0인 경우 해당 메뉴를 출력하지 않음
if ($is_admin !== "super" && isset($board_info['bo_use_search']) && $board_info['bo_use_search'] == '0') {
continue;
}
// 2차 메뉴에서 현재 URL과 일치하는 항목이 있는지 확인
$is_on_class = '';
$sub_menu_active = false;
foreach( (array) $row['sub'] as $row2 ){
if( empty($row2) ) continue;
// 현재 페이지의 URL이 2차 메뉴의 링크와 일치하는지 확인
if (strpos($_SERVER['REQUEST_URI'], $row2['me_link']) !== false) {
$sub_menu_active = true;
break;
}
}
// 1차 메뉴의 링크와 현재 URL이 일치하거나, 2차 메뉴 중 활성화된 것이 있으면 'on' 클래스 추가
if ($sub_menu_active || strpos($_SERVER['REQUEST_URI'], $row['me_link']) !== false) {
$is_on_class = 'on';
}
?>
<li class="gnb_1dli">
<a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_1da <?php echo $is_on_class; ?>"><?php echo $row['me_name'] ?></a>
<?php
$k = 0;
foreach( (array) $row['sub'] as $row2 ){
if( empty($row2) ) continue;
// 2차 메뉴에 대한 처리
$sub_bo_table = basename($row2['me_link'], '.php');
// bo_use_search 값을 가져오기 위해 해당 게시판 정보를 조회
$sub_sql = "SELECT bo_use_search FROM {$g5['board_table']} WHERE bo_table = '$sub_bo_table'";
$sub_board_info = sql_fetch($sub_sql);
// bo_use_search 값이 0인 경우 해당 2차 메뉴를 출력하지 않음
if ($is_admin !== "super" && isset($sub_board_info['bo_use_search']) && $sub_board_info['bo_use_search'] == '0') {
continue;
}
// 2차 메뉴의 활성화 상태 확인
$sub_is_on_class = (strpos($_SERVER['REQUEST_URI'], $row2['me_link']) !== false) ? 'on' : '';
if($k == 0)
echo '<button type="button" class="btn_gnb_op"><span class="sound_only">하위분류</span></button><ul class="gnb_2dul">'.PHP_EOL;
?>
<li class="gnb_2dli"><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="gnb_2da <?php echo $sub_is_on_class; ?>"><span></span><?php echo $row2['me_name'] ?></a></li>
<?php
$k++;
} //end foreach $row2
if($k > 0)
echo '</ul>'.PHP_EOL;
?>
</li>
<?php
$i++;
} //end foreach $row
if ($i == 0) { ?>
<li id="gnb_empty">메뉴 준비 중입니다.<?php if ($is_admin) { ?> <br><a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 > 환경설정 > 메뉴설정</a>에서 설정하세요.<?php } ?></li>
<?php } ?>
<?php if (defined('G5_USE_SHOP') && G5_USE_SHOP) { ?>
<li class="gnb_1dli"><a href="<?php echo G5_SHOP_URL ?>" class="gnb_1da"> 쇼핑몰</a></li>
<?php } ?>
</ul>
<style>.gnb_1da.on,.gnb_2da.on, .gnb_al_a.on, .gnb_al_b.on {background:rgba(0,88,255,.3);font-weight:bold !important;color:crimson !important}</style>
mobile head.php의 <ul id="gnb_1dul"> ~ </ul> 여기에 붙여넣기 하세요.
css는 적절히 수정하세요.
menu_class.zip
메뉴 설정 시 도메인은 삭제하여 "/" 부터 시작하도록 하여 주세요.
menu_class2.zip는 다 됩니다.
!-->!-->
추천
4
4
댓글 10개
수고하셨어요. 들레아빠님
@비타주리 감사 드려요. 질답에 올라왔길래 여기에 올렸습니다.
좋은팁 추천합니다
@푸른산타님 감사 합니다.
감사합니다.^^
@GREENnBLUE님 감사 합니다.
감사합니다!!
@아이스웨덴™님 감사 합니다.
감사합니다.