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

현재경로 표시 (관리자 설정 기반) 메뉴명 표시하기 질문 있습니다.

DNKK 3년 전 조회 1,750

 

안녕하세요.

https://sir.kr/g5_skin/14381

이 소스를 사용하려고 수정중입니다.

해당 소스를 적용 하면 

[홈 > 현재 메뉴1Dept명 > 전체 ▼ ] 이렇게 표시되고

[전체 ▼] 에 커서를 올리면 2Dept메뉴 리스트가 아래로 뜨는 방식입니다.

 

이걸

[홈 > 현재 메뉴 1Dept명 > 현재 메뉴 2Dept명 ▼ ] 으로 바꿀 수 있을까요?

제가 지식이 짧다보니 이 소스 코드 안에서 "현재 2dept메뉴명"만 추가로 표시하려 하는데 잘 안되네요 ㅠㅠ

도움 주실 분 간절히 부탁드립니다..

 

별도로,, 현재 hover로 하위메뉴 리스트를 보여주는데,

이걸 클릭하면 나타나고, 롤아웃 되면 사라지게 수정까지 해주시면 정말 감사하겠습니다..

사실 이정도는 스크립트로 addClass 직접 처리 가능할거 같은데,

제 능력으로는 아무래도 코드가 난잡해질것 같아서요..

(이건 혹시나 요청드리는 내용입니다. 바쁘신 분은 위의 내용만 봐주셔도 너무 감사드립니다)

 

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

답변 2개

D
3년 전

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>    // 메인 타임라인용 함수

    function getTimeline($bo_table, $startDate="", $endDate="") {

        global $g5;</p>

<p>        $startDate        = $startDate ? $startDate :date("Ymd", strtotime("-6 month"));

        $endDate        = $endDate ? $endDate : date("Ymd", strtotime("+6 month"));

        $timelineStr    = "";

        $sql            = "select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";

        $board            = sql_fetch($sql);</p>

<p>        $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름</p>

<p>        $sql    = " select * from {$tmp_write_table} where wr_is_comment = 0 AND (wr_1 <= '".$endDate."' OR wr_1 >= '".$startDate."')";

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

<p>        for ($i=0; $row = sql_fetch_array($result); $i++) {

            $row['wr_1']  = date("Y-m-d", strtotime($row['wr_1']));

            $timelineStr .= "{id:".$i.", content:'".$row['wr_subject']."', start:'".$row['wr_1']."'},";

        }

        $timelineSrt = substr($timelineStr, 0, -1);

        return $timelineSrt;

    }</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 Request extends Board {</p>

<p>    protected $g5;

    protected $skin_url;</p>

<p>    // 생성자

    function __construct($url='')

    {

        $this->skin_url = $url;

        echo $this->g5;

    }</p>

<p>    function setStat($stat=0)

    {</p>

<p>    }</p>

<p>    function getStatVal($stat=0)

    {

        switch($stat) {

            case 0:

                $css = 'state_rec';

                $val = "접수대기";

                break;

            case 1:

                $css = 'state_ing';

                $val = "진행중";

                break;

            case 2:

                $css = 'state_end';

                $val = "작업완료";

                break;

            case 3:

                $css = 'state_stop';

                $val = "작업보류";

                break;

            case 4:

                $css = 'state_cancel';

                $val = "작업취소";

                break;

            default:

                $css = 'state_rec';

                $val = "접수대기";

        }</p>

<p>        $val = "<span class='" . $css . "'>" . $val . "</span>";</p>

<p>        return $val;

    }</p>

<p>    function getLevelVal($stat=0)

    {

        switch($stat) {

            case 0:

                $img = "user_1.png";

                $val = "일반회원";

                break;

            case 1:

                $img = "user_2.png";

                $val = "계약회원";

                break;

            default:

                $img = "user_1.png";

                $val = "일반회원";

        }</p>

<p>        $img = "<img src='" . $this->skin_url . "/img/" . $img . "' alt='" . $val . "' />";

        $val = $img . $val;</p>

<p>        return $val;

    }

}</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 "<div class='menu'><div class='lnb'>";

        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></div>";

    }</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 { // 서브메뉴

                foreach ($totalMenu as $valMenu) {

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

                    if ((strlen($me_code) == 4) & (substr($me_code, 0, 2) == $code)) $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;

        }</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 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  = "<div class='sub_history'>";

        $strNav .= "<div class='wrap'>";

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

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

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

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

        if($menuLength>2) {

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

            $strNav .= "<a href='#none'>{$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 .= "<li class='active'>";

            $strNav .= "<a href='#none'>전체 ▼</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>";

        }

        $strNav .= "</ul>";

        $strNav .= "</div>";

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

<p>        return $strNav;

    }

}

?></p>

<p>

 

그리고 퍼블리싱 코드는 아래입니다.

</p>

<p><!-- 메뉴 네비게이션 -->

<style>

/*네비게이션 사용 클래스*/

.sub_history_wrap { position: fixed; left: 0; top: 75px; width: 100%; height: 45px; background-color: rgba(0, 0, 0, .5); font-size: 14px; font-weight: 300; z-index: 1;}

.sub_history {width: 1170px; text-align: left; margin: 0 auto; border-left: 1px solid rgba(255, 255, 255, .15);}

.sub_history .hist_depth1 > li {display: inline-block; width: 170px; padding-left: 20px; color: #FFF;background: url("/theme/basic/img/arrow_btn.png") 100% no-repeat;background-position:left center; border-right: 1px solid rgba(255, 255, 255, .15); box-sizing: border-box; }

.sub_history .hist_depth1 > li:first-of-type { width: 60px;}

.sub_history .hist_depth1 > li:first-child {margin-left: 0;padding-left: 0;background: none;}

.sub_history .hist_depth1 > li:first-child a { text-align: center;}

.sub_history .hist_depth1 > li > a { display: inline-block; width: 100%; height: 45px; line-height: 45px; color: #FFF;}

.sub_history .hist_depth1 .active {color: #FFF;position: relative;}

.sub_history .hist_depth1 .active:hover {color: #FFF;}

.sub_history .hist_depth1 .active:hover .hist_depth2 {display: block;}

.sub_history .hist_depth2 {display:none;position: absolute;top:45px;left: 0;width: 100%;text-align: center;z-index: 99; background-color: rgba(0, 0, 0, .5);}

.sub_history .hist_depth2 li a {display: block;padding: 8px 10px;text-align: left; color: #FFF;}

.sub_history .hist_depth2 li a:hover { background-color: rgba(0, 0, 0, .5); }

.sub_history .hist_depth2 li:last-child a {border: 0;}

</style></p>

<p><div class="sub_history_wrap">

<?php if(defined('INDEX')) { // index에서만 실행 ?>

<?php // 인덱스에서 실행할 내용 ?>

<?php } else {?>

<?php //서브페이지일경우 ?>

<?php echo $_menu->viewNav(); ?>

<?php } ?> 

</div></p>

<p>

 

 

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

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

소스를 함볼수있나요?

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

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

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

로그인