메뉴설정에서 생성된 메뉴 활성화...관련 문의남깁니다...
본문
메뉴설정에서 생성된 메뉴 활성화 관련해서 명확한 답변들을 찾지 못해 글남겨봅니다ㅠㅠㅠ
그누보드를 써왔지만 기본 메뉴는 안쓰고 하드코딩하고 커스텀만 해와서 페이지 인식을 신경 안썼었는데....
이번에 제작하면서 메뉴를 관리자에서 설정해서 사용해보고자 관리자 메뉴설정에서 메뉴들을 세팅해서 불러오게 해봤는데 페이지 인식을 어떻게 걸어줘야할까요...??
(하드코딩하고 커스텀제작시 메뉴가 변동되면 코드를 수정해줘야하는 번거로움때문에 관리자에서 메뉴설정에서 추가/삭제/수정 하는 것이 더 편한거 같아서 바꿔보려고 합니다...)
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
이게 뭔가요 ?
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');
?>
음...