메뉴에 클래스 주기(12.24수정) > 그누보드5 팁자료실

그누보드5 팁자료실

메뉴에 클래스 주기(12.24수정) 정보

메뉴에 클래스 주기(12.24수정)

첨부파일

사용자 지정 1.png (32.8K) 1회 다운로드 2024-12-14 10:51:00
menu_class.zip (3.5K) 3회 다운로드 2024-12-14 10:56:08
menu_class2.zip (3.5K) 1회 다운로드 2024-12-24 17:04:02

본문


    <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는 적절히 수정하세요.

 

ed37f62641e85a62cb9d48538b57b91e_1735017707_0497.png

 

menu_class.zip

메뉴 설정 시 도메인은 삭제하여 "/" 부터 시작하도록 하여 주세요.

menu_class2.zip는 다 됩니다.

추천
4
  • 복사

댓글 10개

© SIRSOFT
현재 페이지 제일 처음으로