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

드롭다운 메뉴 네비게이션 문의 채택완료

이미님 8년 전 조회 21,818

와싸네 메뉴네비게이션

https://sir.kr/g5_skin/14381?page=2" target="_self">https://sir.kr/g5_skin/14381?page=2

 

위 스킨(?)을 사용하고자 합니다.

원본은 가장 하위 차수만 드롭다운이 되는데요,

 

 

 

저는 1차수도 드롭다운이 되도록 하고 싶어요.

코드를 이래저래 보다가 우찌우찌 1차수가 나오도록 했는데요,

 


 


문제는 2차 메뉴가 1번일 경우만 드롭다운이 되고, 2 이상일 때는 공백으로 나옵니다.. 크흑.. 

 


 

 

</span></p><p>    // 네비게이션 문구 출력 (예: 홈 > 고객센터 > 공지사항)</p><p>    function viewNav()</p><p>    {</p><p> </p><p>        $pageType = $this->getPageType($_SERVER['SCRIPT_NAME']);</p><p> </p><p>        $me_code = $this->getMenuCode();</p><p>        if(!$me_code) $me_code = "10";</p><p> </p><p>        $firstMenuCode = substr($me_code, 1, 2); // 1차메뉴 코드 // 이미나라 추가</p><p>        $firstMenu = $this->getMenu($firstMenuCode); // 1차메뉴 배열<span style="font-size: 14.6667px; line-height: 1.5;"> </span><span style="font-size: 14.6667px; line-height: 1.5;">// 이미나라 추가</span></p><p>        $firstMenuTitle = $this->getMenuTitle($firstMenuCode); // 1차메뉴 이름<span style="font-size: 14.6667px; line-height: 1.5;"> </span><span style="font-size: 14.6667px; line-height: 1.5;">// 이미나라 추가</span></p><p> </p><p>        $middleMenuCode = substr($me_code, 0, 2); // 1차메뉴 코드</p><p>        $middleMenu = $this->getMenu($middleMenuCode); // 1차메뉴 배열</p><p>        $middleMenuTitle = $this->getMenuTitle($middleMenuCode); // 1차메뉴 이름</p><p>        $curMenu    = $this->getMenu($me_code[0]); // 현재메뉴 배열</p><p>        $curMenuTitle = $this->getMenuTitle($me_code); // 현재메뉴 이름</p><p>        $menuLength = strlen($me_code);</p><p> </p><p>        $middleLink = $this->getMenuLink($middleMenuCode);</p><p> </p><p>        $strNav .= "<ul id='lnb'>";</p><p>        $strNav .= "<li class='home'><a href='../'>홈</a></li>";</p><p>        $strNav .= "<li class='lnb_1dli active'>";</p><p>        $strNav .= "<a href='" . $middleLink . "' class='lnb_1da active'>1차{$middleMenuTitle}</a>";</p><p>            $strNav .= "<ul class='lnb_2dul'>";</p><p>            for($i=0; $i<count($firstMenu); $i++) {<span style="font-size: 14.6667px; line-height: 1.5;"> </span><span style="font-size: 14.6667px; line-height: 1.5;">// 이미나라 추가</span></p><p>                $strNav .= "<li class='lnb_2dli'><a href='" . $firstMenu[$i]['me_link'] . "' class='lnb_2da'>{$firstMenu[$i]['me_name']}</a></li>";<span style="font-size: 14.6667px; line-height: 1.5;"> </span><span style="font-size: 14.6667px; line-height: 1.5;">// 이미나라 추가</span></p><p>            }</p><p>            $strNav .= "</ul>";<span style="font-size: 14.6667px; line-height: 1.5;"> </span><span style="font-size: 14.6667px; line-height: 1.5;">// 이미나라 추가</span></p><p>            $strNav .= "</li>";</p><p> </p><p>        // 마지막 메뉴인 경우</p><p>        if($menuLength>2) {</p><p>            $strNav .= "<li class='lnb_1dli active'>";</p><p>            $strNav .= "<a href='#none' class='lnb_2da'><strong>2차{$curMenuTitle}</strong></a>";</p><p>            $strNav .= "<ul class='lnb_2dul'>";</p><p>            for($i=0; $i<count($middleMenu); $i++) {</p><p>                $strNav .= "<li><a href='" . $middleMenu[$i]['me_link'] . "' class='lnb_2da'>{$middleMenu[$i]['me_name']}</a></li>";</p><p>            }</p><p>            $strNav .= "</ul>";</p><p>            $strNav .= "</li>";</p><p><span class="Apple-tab-span" style="white-space:pre">		</span>//처음 메뉴일 경우</p><p>        } else if ($menuLength == 2) {</p><p>            $strNav .= "<li class='lnb_1dli active'>";</p><p>            $strNav .= "<a href='#none' class='lnb_2da'><strong>2차{$curMenuTitle}</strong></a>";</p><p>            $strNav .= "<ul class='lnb_2dul'>";</p><p>            for($i=0; $i<count($middleMenu); $i++) {</p><p>                $strNav .= "<li><a href='" . $middleMenu[$i]['me_link'] . "' class='lnb_2da'>{$middleMenu[$i]['me_name']}</a></li>";</p><p>            }</p><p>            $strNav .= "</ul>";</p><p>            $strNav .= "</li>";</p><p>        }</p><p>        $strNav .= "</ul>";</p><p> </p><p>        return $strNav;</p><p> </p><p>    }</p><p><span style="font-size: 11pt; line-height: 1.5;">

 

코드에서  // 이미나라 추가 라고 되어있는 부분이 제가 추가한 코드에요..

서당개 풍월 읊는 수준이라.....;;

뭐가 문제일 거라는 대략적인 감은 오는데 이게 해결이 가능할까요?;;

 

 

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

답변 4개

4년 전

css

 

</p>

<p>#aside {position:relative;background:#1079b3;z-index:10 !important;}

#lnb {position:relative;height:70px;z-index:10;}

    #lnb ul.lnb_1dul {display:table;position:relative;width:calc(100% - 50px);height:100%;margin-left:50px;}

    #lnb li.lnb_1dli {display:table-cell;position:relative;width:33.33%;height:100%;border-right:1px solid rgba(255,255,255,.5);}

    #lnb li.home {position:absolute;left:0;top:15px;margin-left:-50px;}

    #lnb li.home a {display:inline-block;width:40px;height:40px;border-radius:3px;line-height:45px;text-align:center;background:#fff;}

    #lnb li.home a::after {content:"\f015";font-family:"FontAwesome";font-size:1.3em;color:#1079b3;}

    #lnb a {display:block;font-family:'S-CoreDream-4Regular','NanumGothic','NanumG','나눔고딕','돋움';color:#fff;line-height:70px;transition:all .2s;}

    #lnb a.lnb_1da {display:block;position:relative;padding:0 50px 0 30px;font-size:1.2em;color:rgba(255,255,255,.8);text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;overflow:hidden;}

    #lnb a.lnb_1da:after {position:absolute;top:0;right:20px;content:"\f13a";font-family:"FontAwesome";font-size:1.1em;color:#fd0;line-height:70px;}

    #lnb li.lnb_1dli:hover a.lnb_1da, #lnb a.lnb_1da:hover {color:rgba(255,255,255,1);}

    #lnb li.lnb_1dli:last-child a.lnb_1da {font-family:'S-CoreDream-5Medium','NanumGothic','NanumG','나눔고딕','돋움';color:rgba(255,255,255,1);background:rgba(0,0,0,.3);}

    #lnb li.lnb_1dli:last-child a.lnb_1da:hover, #lnb li.lnb_1dli:last-child:hover a.lnb_1da {background:rgba(0,0,0,.5);}

    #lnb li.lnb_1dli:last-child a.lnb_1da:hover:after {color:#fff;}

    #lnb .lnb_2dul {display:none;position:absolute;top:70px;left:0;right:0;border:1px solid #3c3c3c;border-top:none;text-align:left;z-index:99;}

    #lnb .lnb_1dli:hover .lnb_2dul {display:block;}

    #lnb .lnb_2dul li a {padding:0 10px 0 22px;border-top:1px solid #efefef;color:#000;line-height:45px;background:#fff;}

    #lnb .lnb_2dul li a:hover, #lnb .lnb_2dul li a.hover {color:#fff;background:#1c1c1c;}

    #lnb.lnb_10 ul.lnb_1dul, #lnb.lnb_10 li.lnb_1dli,

    #lnb.lnb_60 ul.lnb_1dul, #lnb.lnb_60 li.lnb_1dli,

    #lnb.lnb_70 ul.lnb_1dul, #lnb.lnb_70 li.lnb_1dli,

    #lnb.lnb_50 ul.lnb_1dul, #lnb.lnb_50 li.lnb_1dli {display:inline-block;}

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

하마콧구멍
4년 전
정말 감사합니다^^♥

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

4년 전

extend > cn.extend.php

 

</p>

<p><?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가</p>

<p>// 2017.05.17 추가 from lux

// Ver. 0.0.2</p>

<p>$_cn = new MyClass($member['mb_id']); // 기본객체 생성

$_menu = new Menu(); // 메뉴객체 생성</p>

<p>// 기본 클래스

class MyClass {

    private $g5;

    private $userid;</p>

<p>    // 생성자

    function __construct($mb_id='')

    {

        $this->userid = $mb_id;

    }</p>

<p>    function privacy($str, $len=1)

    {

        $charset = mb_detect_encoding($str); // charset 검사

        $str = trim(strip_tags($str)); // 태그 및 공백 제거

        $str = mb_substr($str, 0, $len, $charset); // $len 만큼만 가져오기

        $str = $str . "**";</p>

<p>        return $str;

    }</p>

<p>}</p>

<p>// 게시판 클래스

class Board {</p>

<p>    private $g5;

    private $skin_url;</p>

<p>    // 생성자

    function __construct($url='')

    {

        global $g5;</p>

<p>        $this->g5 = $g5;

        $this->skin_url = $url;

    }

}</p>

<p>

// 메뉴 클래스

class Menu {</p>

<p>    public $menu;</p>

<p>    // 생성자

    function Menu()

    {

        $this->setMenu();

    }</p>

<p>    // 메뉴 배열로 세팅하기

    function setMenu()

    {

        global $g5;</p>

<p>        $order = "order by me_order, me_id";</p>

<p>        $query = "select * from {$g5['menu_table']}  where me_use = '1' $order";</p>

<p>        $result = sql_query($query, false);</p>

<p>        while($row=sql_fetch_array($result)) {

            $menu[] = $row; // 배열에 메뉴 저장

        };</p>

<p>        $this->menu = $menu;</p>

<p>    }</p>

<p>    // 메뉴 출력하기

    function viewMenu()

    {

        $menu = $this->getMenu(1); // 1차메뉴 가져오기</p>

<p>        for($i=0, $strMenu1='', $strMenu2='', $menucode='', $menulength=2; $i < count($menu); $i++) {

            $menucode =  $menu[$i]['me_code'];

            $menulength = strlen($menucode);</p>

<p>            $strMenu1 .= "<li><a href=" . $menu[$i]['me_link'] . " target=_{$menu[$i]['me_target']}>{$menu[$i]['me_name']}</a></li>";

            $strMenu2 .= "<li><ul>";

            $arrMenu = $this->getMenu($menucode);

            if($arrMenu) {

                foreach ($arrMenu as $submenu) { // 2차메뉴

                    $strMenu2 .= "<li><a href=" . $submenu['me_link'] . " target=_{$submenu['me_target']}>{$submenu['me_name']}</a></li>";

                }

            }

            $strMenu2 .= "</ul></li>";

        }</p>

<p>        echo "<link rel='stylesheet' href='".G5_URL."/extend/menu.extend.css'>"; // 메뉴 CSS가져오기

        echo "<link rel='stylesheet' href='".G5_URL."/extend/menu_responsive.extend.css'>"; // 메뉴반응형 CSS가져오기

        echo "<nav id=\"lnb\"><div class=\"container\">";

        echo "<div class='wrap'><ul class='lnb_depth1'>$strMenu1</ul></div>"; // 1차메뉴 출력

        echo "<div class='lnb_depth2'><div class='wrap'><ul>$strMenu2</ul></div></div>"; // 2차메뉴 출력

        echo "</div></nav>";

    }</p>

<p>    // 메뉴 가져오기

    function getMenu($code='')

    {

        $totalMenu = $this->menu;</p>

<p>        if($code=='') return $totalMenu; // 인덱스가 없을 경우 전체메뉴 반환

        if($totalMenu) {

            if ($code == 1) { // 1차메뉴

                foreach ($totalMenu as $valMenu) {

                    $me_code = trim($valMenu['me_code']); // 메뉴코드

                    if (strlen($me_code) == 2) $menu[] = $valMenu;

                }

            } else { // 서브메뉴

//                print_r($totalMenu);

                foreach ($totalMenu as $valMenu) {

                    $me_code = trim($valMenu['me_code']); // 메뉴코드

                    if ((strlen($me_code) == 4) & (substr($me_code, 0, 2) == $code) & strlen($code) == 2) $menu[] = $valMenu;

                    if ((strlen($me_code) == 6) & (substr($me_code, 0, 4) == $code) & strlen($code) == 4) $menu[] = $valMenu;

                }</p>

<p>            }

        }</p>

<p>        return $menu;

    }</p>

<p>    // 메뉴 코드 가져오기

    function getMenuCode($str='')

    {

        global $g5;</p>

<p>        if(!$str) $str = explode("&", $_SERVER['QUERY_STRING'] );

        $token = ''; //토큰 초기화</p>

<p>        foreach($str as $val)

        {

            if(substr($val, 0, 8) == "bo_table") $token = $val;

            if(substr($val, 0, 5) == "co_id") $token = $val;

            if(substr($val, 0, 5) == "ca_id") $token = $val;

            if(substr($val, 0, 5) == "it_id") $token = $val;

            if(substr($val, 0, 3) == "sca") $token = $val;

        }</p>

<p>        // 메뉴링크에서 일치하는 토큰이 있는지 검사</p>

<p>        if($token) { // 토큰이 있는 경우

            $query = "select * from {$g5['menu_table']} where me_link like '%{$token}%'";</p>

<p>            $result = sql_query($query);</p>

<p>            while ($row = sql_fetch_array($result)) {

                $me_code = $row['me_code'];

                $me_link = $row['me_link'];</p>

<p>                $tmp_str = @explode("&", strstr($me_link, $token)); // token을 포함한 경우</p>

<p>                if(is_array($tmp_str)) {

                    foreach ($tmp_str as $tmp_val) {

                        if ($token == $tmp_val) {

                            $code = $me_code;

                        } else {

                            continue;

                        }

                    }

                }

            }

        }</p>

<p>        return $code;

    }</p>

<p>    function getMenuTitle($idx=10)

    {

        global $g5;</p>

<p>        $query = "select me_name from {$g5['menu_table']} where me_code='$idx'";

        $row = sql_fetch($query);</p>

<p>        return $row['me_name'];

    }</p>

<p>    function getMenuLink($idx=10)

    {

        global $g5;</p>

<p>        $query = "select me_link from {$g5['menu_table']} where me_code='$idx'";

        $row = sql_fetch($query);</p>

<p>        return $row['me_link'];

    }</p>

<p>    function getPageType($str='')

    {

        if(!$str) $str = $_SERVER['QUERY_STRING']; // URI가 없을 경우 현재 페이지 URI</p>

<p>        if(preg_match("/board.php/", $str)) return "bbs"; // 게시판

        else if(preg_match("/write.php/", $str)) return "bbs"; // 게시판

        else if(preg_match("/content.php/", $str)) return "content"; // 콘텐츠

        else if(preg_match("/list.php/", $str)) return "list"; // 상품리스트

        else if(preg_match("/item.php/", $str)) return "item"; // 상품상세페이지

        else if(preg_match("/login.php/", $str)) return "login"; // 로그인페이지

        else if(preg_match("/mypage.php/", $str)) return "mypage"; // 마이페이지

        else if(preg_match("/register.php/", $str)) return "register"; // 회원가입

        else if(preg_match("/faq.php/", $str)) return "bbs"; // 회원가입

        else return "etc"; // 기타</p>

<p>    }</p>

<p>    // 네비게이션 문구 출력 (예: 홈 > 고객센터 > 공지사항)

    function viewNav()

    {</p>

<p>        $pageType = $this->getPageType($_SERVER['SCRIPT_NAME']);</p>

<p>        $me_code = $this->getMenuCode();

        if(!$me_code) $me_code = "10";</p>

<p>        $middleMenuCode = substr($me_code, 0, 2); // 1차메뉴 코드

        $middleMenu = $this->getMenu($middleMenuCode); // 1차메뉴 배열

        $middleMenuTitle = $this->getMenuTitle($middleMenuCode); // 1차메뉴 이름

        $curMenu    = $this->getMenu($me_code[0]); // 현재메뉴 배열

        $curMenuTitle = $this->getMenuTitle($me_code); // 현재메뉴 이름

        $menuLength = strlen($me_code);</p>

<p>        $middleLink = $this->getMenuLink($middleMenuCode);</p>

<p>        switch($pageType) {

            case "login" :

                $middleMenuTitle = "로그인";

                $middleLink = '';

                $menuLength = 1;

                break;</p>

<p>            case "mypage" :

                $middleMenuTitle = "마이페이지";

                $middleLink = '';

                $menuLength = 1;

                break;</p>

<p>            case "register" :

                $middleMenuTitle = "회원가입";

                $middleLink = '';

                $menuLength = 1;

                break;</p>

<p>            case "etc" :

                $middleMenuTitle = "기타";

                $middleLink = '';

                $menuLength = 1;

                break;

        }</p>

<p>        $strNav .= "<nav id=\"lnb\"><div class=\"container\"><ul>";

        $strNav .= "<li class='home'><a href='../' class='home'>홈</a></li>";

        $strNav .= "<li><a href='" . $middleLink . "' class='mid'>{$middleMenuTitle}</a></li>";</p>

<p>        // 마지막 메뉴인 경우

        if($menuLength>2) {

            $strNav .= "<li class='active'>";

            $strNav .= "<a href='#none' class='now'>{$curMenuTitle}</a>";

            $strNav .= "<ul class='hist_depth2'>";

            for($i=0; $i<count($middleMenu); $i++) {

                $strNav .= "<li><a href='" . $middleMenu[$i]['me_link'] . "'>{$middleMenu[$i]['me_name']}</a></li>";

            }

            $strNav .= "</ul>";

            $strNav .= "</li>";

        } else if ($menuLength == 2) {

            //처음 메뉴일 경우

            $strNav .= "";

        }

        $strNav .= "</ul></nav>";</p>

<p>        return $strNav;

    }</p>

<p>    // 네비게이션 문구 출력 (예: 홈 > 고객센터 > 공지사항)

    function viewNav2()

    {</p>

<p>        $pageType = $this->getPageType($_SERVER['SCRIPT_NAME']);</p>

<p>        $me_code = $this->getMenuCode();

        if(!$me_code) $me_code = "10";</p>

<p>        $middleMenuCode = substr($me_code, 0, 2); // 1차메뉴 코드</p>

<p>        $strNav .= "<nav id=\"lnb\" class=\"lnb_{$middleMenuCode}\"><ul class=\"lnb_1dul\">";

        $strNav .= "<li class=\"home\"><a href=\"../\"><span class=\"sound_only\">홈</span></a></li>";</p>

<p>        if ($menuLength == 1) {

            $strNav .= "<li class=\"mid\"><a href='" . $middleLink . "'>{$middleMenuTitle}</a></li>";

        } else {

            $tmpMenuCode = $me_code;

            $tmpCode = '';

            while ($tmpMenuCode) {

                $tmpCode .= substr($tmpMenuCode, 0, 2);

                if (substr($tmpCode, 0, -2)) {

                    $nowMenu = $this->getMenu(substr($tmpCode, 0, -2)); // 1차메뉴 배열

                } else {

                    $nowMenu = $this->getMenu('1'); // 1차메뉴 배열

                };

                $nowTitle = $this->getMenuTitle($tmpCode); // 현재메뉴 이름</p>

<p>                $strNav .= "<li class=\"lnb_1dli\">";

                $strNav .= "<a href=\"javascript:()\" class=\"lnb_1da\">{$nowTitle}</a>";

                $strNav .= "<ul class=\"lnb_2dul\">";

                for($i=0; $i<count($nowMenu); $i++) {

                    $strNav .= "<li><a href='" . $nowMenu[$i]['me_link'] . "'>{$nowMenu[$i]['me_name']}</a></li>";

                }

                $strNav .= "</ul>";

                $strNav .= "</li>";</p>

<p>                $tmpMenuCode = substr($tmpMenuCode, 2, strlen($tmpMenuCode));

            };

        };</p>

<p>        $strNav .= "</ul></nav>";

        return $strNav;</p>

<p>    }

}

?></p>

<p>

로그인 후 평가할 수 있습니다

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

하마콧구멍

혹시 해결 되셨ㄴㅏ요?? ㅜㅠ 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

이미님
4년 전
네.. 몇해전 일이라 어찌했는지 기억은 안 나지만;; 아무튼 해당 소스를 지금까지도 종종 쓰고 있어요^^;
윗쪽에 제가 쓰는 코드를 css랑 같이 올려뒀으니 필요하다면 참고해보셔요.

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

하마콧구멍

혹시 해결 되셨ㄴㅏ요?? ㅜㅠ 

로그인 후 평가할 수 있습니다

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

답변을 작성하려면 로그인이 필요합니다.

로그인