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

2차(서브)메뉴를 중간(?)부분에 출력해보기~

안녕하세요~ 오늘은 중간 네비게이션 메뉴를 적용하는 팁을 공유 해볼까 합니다.

 

661996078_1684841590.7785.png

 

한번쯤은 위의 이미지와 같은 중간에 나오는 2차(서브)메뉴들을 보신적 있으시죠?

예전에 이 부분을 적용해 보고 싶어서 질문글을 올리기도 했었는데요~

자동메뉴로 상단에 출력되는 메뉴들 중에서 2차 메뉴만 따로 분리해서 중간에 적용해 보려고 하다가 포기 했었는데요 이번에 스킨을 제작 하면서 여러가지 시도를 해보고 적용이 잘 되어 공유해 봅니다.

 

저처럼 초보자 분들에게 도움이 되길 바랍니다.

소스코드는 아래와 같습니다.

 

게시판이 아닌 일반 페이지일경우 (ex : about.php)

[code]

<?php

$menu_datas = get_menu_db(0, true);

$current_url = $_SERVER['REQUEST_URI'];

$is_submenu_active = false;

 

foreach ($menu_datas as $row) {

    if (empty($row)) continue;

 

    if ($row['me_link'] === $current_url) {

        $is_submenu_active = true;

        ?>

 

        <?php

        foreach ((array)$row['sub'] as $row2) {

            if (empty($row2)) continue;

            ?>

            <li class="l_menu_<?php echo ($row2['me_link'] === $current_url) ? 'ON' : 'OFF'; ?>">

                <a href="<?php echo $row2['me_link']; ?>"><?php echo $row2['me_name']; ?></a>

            </li>

            <?php

        }

        break;

    }

}

 

if (!$is_submenu_active) {

    foreach ($menu_datas as $row) {

        if (empty($row)) continue;

       

        $is_submenu_active = false;

        foreach ((array)$row['sub'] as $row2) {

            if (empty($row2)) continue;

            if ($row2['me_link'] === $current_url) {

                $is_submenu_active = true;

                break;

            }

        }

       

        if ($is_submenu_active) {

            ?>

            <li class="l_menu_ON">

                <a href="<?php echo $row['me_link']; ?>"><?php echo $row['me_name']; ?></a>

            </li>

            <?php

            foreach ((array)$row['sub'] as $row2) {

                if (empty($row2)) continue;

                ?>

                <li class="l_menu_<?php echo ($row2['me_link'] === $current_url) ? 'ON' : 'OFF'; ?>">

                    <a href="<?php echo $row2['me_link']; ?>"><?php echo $row2['me_name']; ?></a>

                </li>

                <?php

            }

            break;

        }

    }

}

?>

[/code]

현재 페이지 의 url을 기준으로 1차메뉴 와 1차메뉴에 속한 2차메뉴를 찾아서 2차메뉴만 출력해주는 방식입니다. 또한 클릭한 2차 메뉴만 활성화 시켜줍니다.

 

게시판일 경우 (ex : 게시판명 -> notice )

[code]

<?php

$menus = array(

    'notice' => array(

        'title' => '공지사항',

        'bo_table' => 'notice',

    ),

    'faq' => array(

        'title' => '자주묻는 질문',

        'bo_table' => 'faq',

    ),

    'qna' => array(

        'title' => '질문/답변',

        'bo_table' => 'qna',

    ),  

);

 

$current_menu = isset($_GET['bo_table']) ? $_GET['bo_table'] : '';

 

?>

 

<ul id="wm_snb">

    <?php foreach ($menus as $menu_key => $menu) { ?>

        <li class="<?php echo ($current_menu == $menu['bo_table']) ? 'menu_ON' : 'menu_OFF' ?>">

            <a href="/bbs/board.php?bo_table=<?php echo $menu['bo_table'] ?>"><?php echo $menu['title'] ?></a>

        </li>

    <?php } ?>

</ul>

[/code]

게시판에서는 $board 변수를 사용하지 않고 $menus 변수를 사용했습니다. 이유는 $board 변수충돌을 막기 위함이죠~ (다들 아시는 부분이죠--;;) 처음에 이거 때문에 좀 헤매였습니다.

 

위의 소스를 원하시는 위치에 붙여 넣으셔도 되지만 나중에 관리하기 힘드시기 때문에 sub_menu.nav.php 이런식으로 파일을 생성 하신후 원하시는 위치에서 인클루드 하시면 편하실 겁니다.

 

오늘도 즐거운 하루 되세요

댓글 작성

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

로그인하기

댓글 11개

좋은 팁, 감사합니다. ^^
@일상여행2 초보자의 팁입니다
댓글 감사합니다
감사합니다.
@민트다이어리 댓글 감사합니다
와 천재...영재님 .. 대박
@myfree 과찬이십니다. 초보라서~ 많이 배우고 있는 상황입니다.^^
테이블명이나 메뉴명을 바꾸면 기능이 안되는데요.
@산비탈 실제 사용하는 테이블명 및 메뉴명으로 수정해 주셔야 합니다.^^
답변 감사합니다.
id="wm_snb"는 어디를 참조하나요.
@산비탈 id="wm_snb" 이부분은 CSS 부분이므로 원하시는 형태로 css를 만드시면 됩니다.

선생님 제작하시다가 어디 가셨나요 ? 답변 바랍니다.

게시글 목록

번호 제목
22569
22566
22565
22559
22530
22527
22525
22521
22518
22506
22500
22490
22487
22481
22480
22473
22471
22468
22453
22449
22440
22436
22435
22415
22407
22404
22376
22364
22362
22353