그누보드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” 폴더에 넣어두면 됩니다.