[그누보드5] 회원관리페이지 여분필드 HOOK 이용해 명칭 변경 방법


 

 

광고

그누보드5를 이용할 때 회원정보 여분필드를 사용하다가 추후에 사용용도를 잊어먹는 경우가 많는데 이럴 때 회원관리 관리자 페이지에서 여분필드의 명칭을 변경하는 방법을 알려드리겠습니다.

2가지 방법이 있는데 내부코어를 수정하는 방법과 내부코어를 변경하지 않고 그누보드 5.4부터 지원하는 HOOK(훅)을 통해 필드명칭을 변경하는 방법이 있습니다.

1. 관리자페이지 수정 방법

“/adm/member_form.php”파일을 열어서 568번째 줄을 보면 아래와 같은 코드가 있습니다.

<?php for ($i = 1; $i <= 10; $i++) { ?>
    <tr>
        <th scope="row"><label for="mb_<?php echo $i ?>">여분 필드 <?php echo $i ?></label></th>
        <td colspan="3"><input type="text" name="mb_<?php echo $i ?>" value="<?php echo $mb['mb_' . $i] ?>" id="mb_<?php echo $i ?>" class="frm_input" size="30" maxlength="255"></td>
    </tr>
<?php } ?>

for문을 이용해 총 10개의 여분 필드를 표시해주고 있는데 이 코드를 아래와 같이 고쳐주면 여분 필드의 이름을 수동으로 설정할 수 있습니다.

<tr>
    <th scope="row"><label for="mb_1">사원번호</label></th>
    <td colspan="3"><input type="text" name="mb_1" value="<?php echo $mb['mb_1'] ?>" id="mb_1" class="frm_input" size="30" maxlength="255"></td>
</tr>
<tr>
    <th scope="row"><label for="mb_2">입사일</label></th>
    <td colspan="3"><input type="text" name="mb_2" value="<?php echo $mb['mb_2'] ?>" id="mb_2" class="frm_input" size="30" maxlength="255"></td>
</tr>
<tr>
    <th scope="row"><label for="mb_3">소속부서</label></th>
    <td colspan="3"><input type="text" name="mb_3" value="<?php echo $mb['mb_3'] ?>" id="mb_3" class="frm_input" size="30" maxlength="255"></td>
</tr>
<!-- 중간 생략 -->
<tr>
    <th scope="row"><label for="mb_10">여분 필드 10</label></th>
    <td colspan="3"><input type="text" name="mb_10" value="<?php echo $mb['mb_10'] ?>" id="mb_10" class="frm_input" size="30" maxlength="255"></td>
</tr>

위와 같은 방법으로 여분 필드의 이름을 직접 수정할 수 있답니다.

2. HOOK으로 수정 방법

이번에는 adm 폴더의 member_form.php 파일을 직접 수정하지 않고 add_event(HOOK)을 이용해 여분 필드의 이름을 바꿔보는 방법을 알아보겠습니다.

“/adm/member_form.php” 파일 맨 하단에 보면 아래와 같은 코드가 있습니다.

<?php
run_event('admin_member_form_after', $mb, $w);

여기서 “run_event” 함수가 HOOK이며, “admin_member_form_after” 함수가 호출되는 지점입니다.

“admin_member_form_after” 이 이벤트가 실행될 때 회원 정보 여분 필드를 출력할 “member_add_column” 함수를 연결 시켜줄 것입니다.

add_event('admin_member_form_after', 'member_add_column', 10, 2);

위와 같은 코드를 수행하면 “admin_member_form_after” 이벤트가 실행될 때 “member_add_column”함수를 실행하게 됩니다.

숫자 10은 이벤트의 우선순위인데 기본값은 10입니다.

숫자 2는 “member_add_column” 함수에 들어가는 매개변수의 갯수입니다. “$mb”와 “$w” 이렇게 2개가 전달되고 있어서 2라는 값을 넣어줬습니다.

이제 “member_add_column”함수를 구현하면 됩니다.

function member_add_column($mb, $w)
{
    echo @"<script>
             $('label[for=mb_1]').text('사원번호');
             $('label[for=mb_2]').text('입사일');
             $('label[for=mb_3]').text('소속부서');
             $('label[for=mb_4]').text('직책');
             $('label[for=mb_5]').text('직위');
             $('label[for=mb_6]').text('여분6');
             $('label[for=mb_7]').text('여분7');
             $('label[for=mb_8]').text('여분8');
             $('label[for=mb_9]').text('여분9');
             $('label[for=mb_10]').text('여분10');
           </script>";
}

JQuery를 통해 각 레이블의 텍스트를 변경하는 방식으로 처리하였습니다.

아래의 코드는 위의 HOOK 코드를 extend 폴더안에 넣어서 내부코드를 건드리지 않고 작동하도록 구현해봤습니다.

<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

add_event('admin_member_form_after', 'member_add_column', 10, 2);

function member_add_column($mb, $w)
{
    echo @"<script>
             $('label[for=mb_1]').text('사원번호');
             $('label[for=mb_2]').text('입사일');
             $('label[for=mb_3]').text('소속부서');
             $('label[for=mb_4]').text('직책');
             $('label[for=mb_5]').text('직위');
             $('label[for=mb_6]').text('여분6');
             $('label[for=mb_7]').text('여분7');
             $('label[for=mb_8]').text('여분8');
             $('label[for=mb_9]').text('여분9');
             $('label[for=mb_10]').text('여분10');
           </script>";
}
?>

위의 내용을 “member.extend.php”라는 이름으로 저장하고(파일 이름은 마음대로 지정하셔도 됩니다.) “/extend” 폴더에 넣어두면 됩니다.

참고

(그누보드 공식 홈페이지) Hook 개념 소개


답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다