회원필드 type 수정하기 > 그누보드5 팁자료실

그누보드5 팁자료실

회원필드 type 수정하기 정보

회원필드 type 수정하기

본문

 

1. 우리가 회원멤버 필드 mb_1 부터 mb_10 까지의 input type 을 보면 text 로 지정되어 있는 것을 알 수 있습니다.

그런데 가령 5번 필드를 라디오버튼으로 바꾸려고 adm/member_form.php 수정을 시도하려고 코드를 보면...

엥 이게 웬걸? 루프를 10번 돌리는 for 문으로 작성되어 있는 걸 알 수 있습니다. 

그래서 그걸 쉽게 수정하는 방법입니다.

예제로 저는 mb_4 의 type 을 hidden 으로 mb_7 를 input 가 아니라 textarea 로 바꿔 보겠습니다.

 

3717943588_1692675073.7865.jpg

 

----------

 

2. 문서 가장 하단에 아래의 코드를 찾습니다.

 

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

 

바로 그 위에 아래의 코드를 넣어보세요. 자바스크립트로 원하는 input 의 outerHTML 을 바꿔줍니다.

 


<script>
document.querySelector("#mb_4").outerHTML = "<input type='hidden' name='mb_4' id='mb_4' value='<?php echo $mb['mb_4']; ?>'>";
document.querySelector("#mb_7").outerHTML = "<textarea name='mb_7' id='mb_7'><?php echo $mb['mb_7']; ?></textarea>";
</script>

 

----------

 

3. 위와 같은 식으로 라디오버튼 등도 넣어주시면 되구요.

참고로 outerHTML 은 제이쿼리에는 없습니다. 어거지로 만들 수야 있겠지요. parent 로 치고 올라가 거기서 자식에 해당하는 본인의 html() 를 바꿔주면 되긴 합니다.

단 outerHTML 의 경우 상위 엘레먼트가 body 일 때에는 사용하지 못하며 해당 엘레먼트의 바뀌기전 innerHTML 중 일부를 잠재적으로 가지고 있기 때문에 사용할 때 주의해야 하는데... 이 게시글에서 사용한 코드는 양쪽 모두에 해당하지 않습니다.

 

----------

 

4. 하지만 코어를 수정하자니 찝찝한 느낌이 듭니다. 다행히도 이 문서 하단에는 후킹코드가 하나 걸려 있습니다.

 

run_event('admin_member_form_after', $mb, $w);

 

그래서 아래의 hook 을 extend 디렉토리의 문서(에컨대 user.config.php) 또는 다른 문서를 만들어서 입력합니다.

주의할 점은 user.config.php 파일은 최신버전부터는 포함되지 않고 배포되고 있으니 참고하세요.

 


<?php
function admin_member_form_after_hook() {
    global $mb;
    echo "
        <script>
        document.querySelector('#mb_4').outerHTML = '<input type=\'hidden\' name=\'mb_4\' id=\'mb_4\' value=\'".$mb['mb_4']."\'>';
        document.querySelector('#mb_7').outerHTML = '<textarea name=\'mb_7\' id=\'mb_7\'>".$mb['mb_7']."</textarea>';
        </script>
    ";
}
add_event('admin_member_form_after', 'admin_member_form_after_hook');
?>

 

----------

 

5. 그런데 run_event 의 파라미터를 보니 첫번째로 $mb 를 포함하고 있어서 굳이 global 로 선연해 줄 필요는 없을 것 같네요.

 


<?php
function admin_member_form_after_hook($mb) {
    echo "
        <script>
        document.querySelector('#mb_4').outerHTML = '<input type=\'hidden\' name=\'mb_4\' id=\'mb_4\' value=\'".$mb['mb_4']."\'>';
        document.querySelector('#mb_7').outerHTML = '<textarea name=\'mb_7\' id=\'mb_7\'>".$mb['mb_7']."</textarea>';
        </script>
    ";
}
add_event('admin_member_form_after', 'admin_member_form_after_hook', 1, 1);
?>

 

----------

 

6. 만일 $mb 가 5개의 파라미터 중 3번째라고 한다면 아래와 같은 식으로 하면 되겠죠.

3개까지만 적어주면 되겠습니다.

 

function admin_member_form_after_hook($one, $two, $mb)

..

add_event('admin_member_form_after', 'admin_member_form_after_hook', 3, 3);

 

추천
4

댓글 6개

전체 126 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT