메뉴설정에서 생성된 메뉴 활성화...관련 문의남깁니다...

메뉴설정에서 생성된 메뉴 활성화...관련 문의남깁니다...

QA

메뉴설정에서 생성된 메뉴 활성화...관련 문의남깁니다...

답변 3

본문

메뉴설정에서 생성된 메뉴 활성화 관련해서 명확한 답변들을 찾지 못해 글남겨봅니다ㅠㅠㅠ

 

그누보드를 써왔지만 기본 메뉴는 안쓰고 하드코딩하고 커스텀만 해와서 페이지 인식을 신경 안썼었는데....

 

이번에 제작하면서 메뉴를 관리자에서 설정해서 사용해보고자 관리자 메뉴설정에서 메뉴들을 세팅해서 불러오게 해봤는데 페이지 인식을 어떻게 걸어줘야할까요...??

(하드코딩하고 커스텀제작시 메뉴가 변동되면 코드를 수정해줘야하는 번거로움때문에 관리자에서 메뉴설정에서 추가/삭제/수정 하는 것이 더 편한거 같아서 바꿔보려고 합니다...)

 

1차 뎁스 4개이고 2차 뎁스가 있는 상황입니다...;;

 

2차 뎁스의 페이지에 있을때 해당 1차 뎁스의 메뉴가 활성화 되어 있게 하고 싶은건데...

 

게시판은 $gr_id 값으로 매칭시켜서 active 를 주고,

 

서브페이지들은 각각에 $gr_id 값을 페이지에 심어놓고 불러와서 매칭시키면 되겠거니 했는데... 생각한거대로 되질 않는거 같아서 문의 남깁니다;;ㅠㅠㅠㅠ

 


<?php
    $sql = " select *
        from {$g5['menu_table']}
        where me_use = '1'
        and length(me_code) = '2'
        order by me_order, me_id ";
    $result = sql_query($sql, false);
    $gnb_zindex = 999; // gnb_1dli z-index 값 설정용
    $menu_datas = array();
    for ($i=0; $row=sql_fetch_array($result); $i++) {
        $menu_datas[$i] = $row;
        $sql2 = " select *
            from {$g5['menu_table']}
            where me_use = '1'
            and length(me_code) = '4'
            and substring(me_code, 1, 2) = '{$row['me_code']}'
            order by me_order, me_id ";
        $result2 = sql_query($sql2);
        for ($k=0; $row2=sql_fetch_array($result2); $k++) {
            $menu_datas[$i]['sub'][$k] = $row2;
        }
    }
    $i = 0;
    foreach( $menu_datas as $row ){
        if( empty($row) ) continue;
?>
    <li class="gnb_1dli" style="z-index:<?php echo $gnb_zindex--; ?>">
        <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" title="<?= $row['me_name']; ?>" class="gnb_1da title"><?php echo $row['me_name'] ?></a>
    </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 } ?>

 

설정된 메뉴를 이런식으로 불러오다보니까... 감이 오질 않네요...;;

 


if( $gr_id === 'about' ) $active = 'active'; // 서브페이지에 심어진 그룹명
if( $gr_id === 'bp' ) $active = 'active'; // 게시판 그룹명1
if( $gr_id === 'pr' ) $active = 'active'; // 게시판 그룹명2
 
<li class="gnb_1dli <?= $active; ?>">~~~~</li>

 

이렇게 active 클래스를 주게 되면... $gr_id 상관없이 서브페이지들에서 active 가 먹힐거 같은데....

 

어떤 조건을 또 추가해줘야... $gr_id 값에 따라 활성화 체크가 될까요...??ㅠㅠㅠㅠ

 

이 질문에 댓글 쓰기 :

답변 3

이게 뭔가요 ?

제가 설명을 제대로 못한건가요...??ㅠㅠㅠ

관리자페이지 메뉴설정에서 메뉴를 추가하면 head.php 에서 메뉴를 뿌려주는데...

a    b    c    d  <- 1차뎁스
--------------------------------
1    4    6    9  <- 2차뎁스들
2    5    7    10
3        8    11

이렇게 있다고 가정하면... 1,2,3 페이지일 경우에는 a 에 활성화(active 클래스 추가)가 되게 하고,
4,5 일경우 b 활성화(active 클래스 추가)

이런식으로 활성화를 주고 싶다는 거였습니다...;;


<li class="<?= $gr_id === 'about' ? 'active' : ''; ?>"><a href="" title="">a</a></li>
<li class="<?= $gr_id === 'bp' ? 'active' : ''; ?>"><a href="" title="">b</a></li>
<li class="<?= $gr_id === 'pr' ? 'active' : ''; ?>"><a href="" title="">c</a></li>


위 코드는 하드코딩으로 커스텀하는 방식인데... 1차뎁스들을 따로 만들면 가능한데...

그누보드 기본에서 메뉴 뿌려주는 부분은 for문으로 돌려서 li 는 하나만 불러오다보니... 조건을 어떻게 걸어줘야하는지 그 부분이 막혀서 문의 남긴거였습니다..;;ㅠㅠㅠ

https://sir.kr/qa/140536

이 글을 참고하여 자체 해결했습니다...

 

head.php 파일에서 메인메뉴 불러오는 쿼리에 추가


// 그룹이 있으면 그룹명을 가져오고 아닌 경우 서브페이지에 심어놓은 $gr_subject 를 가져옴
$gr_subject = ( $group['gr_subject'] ? $group['gr_subject'] : $gr_subject );
 
$i = 0;
foreach( $menu_datas as $row ){
    if( empty($row) ) continue;
?>
 
<li class="flexbox gnb_1dli<?= ($row['me_name'] === $gr_subject) ? ' active' : ''; ?>" style="z-index:<?php echo $gnb_zindex--; ?>">

 

/서브페이지 폴더명/_head.php 파일에 $gr_subject 를 정의함


<?
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
 
$gr_subject = '회사소개'; // 페이지 인식을 위한 그룹명 정의
$gr_id = 'about'; // 그룹아이디
 
include_once(G5_PATH.'/head.php');
?>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 8
© SIRSOFT
현재 페이지 제일 처음으로