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

메뉴 권한(출력여부)설정 추가

· 4년 전 · 6265 · 25

2943899688_1619578222.9044.png

 

메뉴에 권한을 부여해서 메뉴출력여부를 설정할 수 있도록 하는 방법입니다.
 

1. /adm/menu_list.php 25라인 아래 아래코드 추가
[code]
// 권한 설정 추가
if(!sql_query(" select me_level from {$g5['menu_table']} limit 1 ", false)) {
    sql_query(" ALTER TABLE `{$g5['menu_table']}`
                    ADD `me_level` tinyint(4) NOT NULL DEFAULT '0' AFTER `me_mobile_use` ", true);
}
[/code]

2. /adm/menu_list.php 테이블에 권한설정부분 추가
[code]
<td class="td_mng">
    <label for="me_level_<?php echo $i; ?>" class="sound_only">권한</label>
    <?php echo get_member_level_select('me_level[]', 1, 10, $row['me_level']) ?>
</td>
[/code]

 

3. /adm/menu_list_update.php 하단 메뉴 등록부분 권한부분 추가
[code]
    // 메뉴 등록
    $sql = " insert into {$g5['menu_table']}
                set me_code         = '".$me_code."',
                    me_name         = '".$me_name."',
                    me_link         = '".$me_link."',
                    me_target       = '".sql_real_escape_string(strip_tags($_POST['me_target'][$i]))."',
                    me_order        = '".sql_real_escape_string(strip_tags($_POST['me_order'][$i]))."',
                    me_use          = '".sql_real_escape_string(strip_tags($_POST['me_use'][$i]))."',
                    me_mobile_use   = '".sql_real_escape_string(strip_tags($_POST['me_mobile_use'][$i]))."',
                    me_level   = '".sql_real_escape_string(strip_tags($_POST['me_level'][$i]))."' ";
    sql_query($sql);
[/code]

 

4. 테마 head.php 파일 메뉴출력부분 권한부분 추가
1차메뉴 : if ($member['mb_level'] < $row['me_level']) continue;
2차메뉴 : if ($member['mb_level'] < $row2['me_level']) continue;
전체메뉴 또한 같은형식으로 수정해주시면 됩니다.

수정전
[code]

<ul id="gnb_1dul">
    <li class="gnb_1dli gnb_mnal"><button type="button" class="gnb_menu_btn" title="전체메뉴"><i class="fa fa-bars" aria-hidden="true"></i><span class="sound_only">전체메뉴열기</span></button></li>
    <?php
    $menu_datas = get_menu_db(0, true);
    $gnb_zindex = 999; // gnb_1dli z-index 값 설정용
    $i = 0;
    foreach( $menu_datas as $row ){
        if( empty($row) ) continue;
        $add_class = (isset($row['sub']) && $row['sub']) ? 'gnb_al_li_plus' : '';
    ?>
    <li class="gnb_1dli <?php echo $add_class; ?>" style="z-index:<?php echo $gnb_zindex--; ?>">
        <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_1da"><?php echo $row['me_name'] ?></a>
        <?php
        $k = 0;
        foreach( (array) $row['sub'] as $row2 ){

            if( empty($row2) ) continue;

            if($k == 0)
                echo '<span class="bg">하위분류</span><div class="gnb_2dul"><ul class="gnb_2dul_box">'.PHP_EOL;
        ?>
            <li class="gnb_2dli"><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="gnb_2da"><?php echo $row2['me_name'] ?></a></li>
        <?php
        $k++;
        }   //end foreach $row2

        if($k > 0)
            echo '</ul></div>'.PHP_EOL;
        ?>
    </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">관리자모드 &gt; 환경설정 &gt; 메뉴설정</a>에서 설정하실 수 있습니다.<?php } ?></li>
    <?php } ?>
</ul>
[/code]

수정후
[code]

<ul id="gnb_1dul">
    <li class="gnb_1dli gnb_mnal"><button type="button" class="gnb_menu_btn" title="전체메뉴"><i class="fa fa-bars" aria-hidden="true"></i><span class="sound_only">전체메뉴열기</span></button></li>
    <?php
    $menu_datas = get_menu_db(0, true);
    $gnb_zindex = 999; // gnb_1dli z-index 값 설정용
    $i = 0;
    foreach( $menu_datas as $row ){
        if( empty($row) ) continue;
        if ($member['mb_level'] < $row['me_level']) continue;
        $add_class = (isset($row['sub']) && $row['sub']) ? 'gnb_al_li_plus' : '';
    ?>
    <li class="gnb_1dli <?php echo $add_class; ?>" style="z-index:<?php echo $gnb_zindex--; ?>">
        <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_1da"><?php echo $row['me_name'] ?></a>
        <?php
        $k = 0;
        foreach( (array) $row['sub'] as $row2 ){

            if( empty($row2) ) continue;
            if ($member['mb_level'] < $row2['me_level']) continue;

            if($k == 0)
                echo '<span class="bg">하위분류</span><div class="gnb_2dul"><ul class="gnb_2dul_box">'.PHP_EOL;
        ?>
            <li class="gnb_2dli"><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="gnb_2da"><?php echo $row2['me_name'] ?></a></li>
        <?php
        $k++;
        }   //end foreach $row2

        if($k > 0)
            echo '</ul></div>'.PHP_EOL;
        ?>
    </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">관리자모드 &gt; 환경설정 &gt; 메뉴설정</a>에서 설정하실 수 있습니다.<?php } ?></li>
    <?php } ?>
</ul>
[/code]

댓글 작성

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

로그인하기

댓글 25개

감사 합니다.~~
좋은 자료 감사합니다
1년 전

와 계속오류나서 포기할려다가 보니깐 첨부 다운있네요 ㅠㅠ 근데 3이면 운영자 10도 못보는건가요?  근데 이렇게 말하는도중에 그누보드 6 런칭했네요

너무 감사합니다!

약간 수정할게 더 있기는 하네용.

/adm/menu_list.php 에 해당내용 수정

    <div id="menulist" class="tbl_head01 tbl_wrap">
        <table>
            <caption><?php echo $g5['title']; ?> 목록</caption>
            <thead>
                <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>
            </thead>

 

/admin/menu_form.php 에 해당부분 추가

list += "<label for=\"me_link_" + ms + "\"  class=\"sound_only\">링크<strong class=\"sound_only\"> 필수</strong></label>";
        list += "<input type=\"text\" name=\"me_link[]\" value=\"" + link + "\" id=\"me_link_" + ms + "\" required class=\"required frm_input full_input\">";
        list += "</td>";
        list += "<td class=\"td_mng\">";
        list += "<label for=\"me_target_" + ms + "\"  class=\"sound_only\">권한</label>";
        list += "<select name=\"me_level[]\" id=\"me_target_" + ms + "\">";
        list += "<option value=1>1</option>";
        list += "<option value=2>2</option>";
        list += "<option value=3>3</option>";
        list += "<option value=4>4</option>";
        list += "<option value=5>5</option>";
        list += "<option value=6>6</option>";
        list += "<option value=7>7</option>";
        list += "<option value=8>8</option>";
        list += "<option value=9>9</option>";
        list += "<option value=10>10</option>";
        list += "</select>";
        list += "</td>";

        list += "<td class=\"td_mng\">";
        list += "<label for=\"me_target_" + ms + "\"  class=\"sound_only\">새창</label>";
        list += "<select name=\"me_target[]\" id=\"me_target_" + ms + "\">";
        list += "<option value=\"self\">사용안함</option>";
        list += "<option value=\"blank\">사용함</option>";
        list += "</select>";
        list += "</td>";

 

이 2개 추가하면 메뉴리스트에서 깨지는 현상, 메뉴 처음 추가시 권한테이블 안보이는 현상 2개가 해결됩니다.

게시글 목록

번호 제목
24318
24317
24315
24309
24294
24293
24277
24262
24260
24253
24251
24236
24233
24228
24226
24221
24214
24203
24201
24199
24196
24195
24194
24192
24191
24187
24185
24183
24172
24168