메뉴 권한 설정 회원 레벨별로 다르게 출력하기
관리자 페이지 > 환경설정 > 메뉴 설정을 사용할 때 회원 레벨에 따라 다르게 출력하는 방법입니다.
예를 들어 권한 설정을 2로 입력하면 비회원은 메뉴가 출력되지 않습니다.
10으로 입력하면 관리자만 출력됩니다.
1. DB 수정
g5_menu 테이블에 me_level 필드 추가
필드 추가를 어떻게 하는지 모른다면
adm/menu_list.php 파일 상단쯤에
// 메뉴테이블 생성
if( !isset($g5['menu_table']) ){
die('<meta charset="utf-8">dbconfig.php 파일에 <strong>$g5[\'menu_table\'] = G5_TABLE_PREFIX.\'menu\';</strong> 를 추가해 주세요.');
}
여기 바로 밑에 아래 내용 추가
if(!sql_query(" SELECT me_level from {$g5['menu_table']} limit 1 ")) {
sql_query(" ALTER TABLE `{$g5['menu_table']}` ADD `me_level` tinyint(4) NOT NULL DEFAULT '0' AFTER `me_mobile_use` ", true);
}
위 코드 추가 후 관리자 페이지 > 환경설정 > 메뉴 설정 페이지에 접속
이미 접속해 있다면 브라우저 새로 고침 한번 실행
(메뉴 설정 페이지를 접속하면 자동으로 실행돼서 필드가 생성됩니다.)
필드 생성 후 추가했던 필드 생성 코드는 삭제해도 됩니다.
2. adm/menu_form.php 파일 수정
순서 설정 부분 아래에 다음 내용 추가
list += "<td class=\"td_numsmall\">";
list += "<label for=\"me_level_"+ms+"\" class=\"sound_only\">권한<strong class=\"sound_only\"> 필수</strong></label>";
list += "<input type=\"text\" name=\"me_level[]\" value=\"0\" id=\"me_level_"+ms+"\" required class=\"required frm_input\" size=\"5\">";
list += "</td>";
위치는 아래 이미지 참고
3. adm/menu_list.php 파일 수정
3-1.
$colspan = 7; 부분을 $colspan = 8; 로 수정
3-2.
tr 부분 순서 아래에 권한 추가
<tr>
<th scope="col">메뉴</th>
<th scope="col">링크</th>
<th scope="col">새창</th>
<th scope="col">순서</th>
<th scope="col">권한</th>
<th scope="col">PC사용</th>
<th scope="col">모바일사용</th>
<th scope="col">관리</th>
</tr>
3-3.
td 부분 순서 아래에 권한 추가
<td class="td_num">
<label for="me_level_<?php echo $i; ?>" class="sound_only">권한</label>
<input type="text" name="me_level[]" value="<?php echo $row['me_level'] ?>" id="me_level_<?php echo $i; ?>" class="tbl_input" size="5">
</td>
4. adm/menu_list_update.php 파일 수정
메뉴 등록 쿼리에 권한 추가
me_level = '".sql_real_escape_string(strip_tags($_POST['me_level'][$i]))."',
위치는 아래 이미지 참고
위 내용은 그누보드 버전 상관없이 공통으로 수정해야 하는 내용이고
아래 내용부터는 그누보드 버전별로 차이가 있으니 현재 사용하시는 버전에 맞게 수정하세요.
그누보드 5.3 버전
head.php 파일 수정
모바일은 mobile/head.php
테마 사용 중이면 테마 폴더에 있는 head.php
메뉴 출력 부분 쿼리에 추가
and me_level <= '{$member['mb_level']}'
상세 수정 위치는 아래 이미지 참고 (두 군데 모두 추가)
그누보드 5.4 버전
lib/get_data.lib.php 파일 수정
function get_menu_db 함수를 찾은 후
1. global 변수에 $member; 추가
2. sql_query 부분에 아래 코드 추가
and me_level <= '{$member['mb_level']}'
상세 수정 위치는 아래 내용을 참고하세요.