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

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

· 10개월 전 · 1004 · 10
사용자 지정 1.png

[code]

    <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">관리자모드 &gt; 환경설정 &gt; 메뉴설정</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">관리자모드 &gt; 환경설정 &gt; 메뉴설정</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>

[/code]

head.php의 <nav> ~ </nav>여기에 붙여 넣기 하세요.

 

[code]

            <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">관리자모드 &gt; 환경설정 &gt; 메뉴설정</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>

[/code]

mobile head.php의 <ul id="gnb_1dul"> ~ </ul> 여기에 붙여넣기 하세요.

css는 적절히 수정하세요.

 

ed37f62641e85a62cb9d48538b57b91e_1735017707_0497.png

 

menu_class.zip

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

menu_class2.zip는 다 됩니다.

댓글 작성

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

로그인하기

댓글 10개

10개월 전

수고하셨어요. 들레아빠님

10개월 전

@비타주리 감사 드려요. 질답에 올라왔길래 여기에 올렸습니다.

10개월 전

좋은팁 추천합니다

10개월 전

@푸른산타님 감사 합니다.

10개월 전

감사합니다.^^

10개월 전

@GREENnBLUE님 감사 합니다.

10개월 전

감사합니다!!

10개월 전

@아이스웨덴™님 감사 합니다.

감사합니다.

10개월 전

 

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

게시글 목록

번호 제목
23254
23244
23241
23236
23200
23199
23179
23174
23138
23128
23125
23116
23109
23099
23092
23083
23079
23063
23050
23036
23029
23007
23003
22983
22959
22943
22939
22934
22905
22897