KBoard에 새로운 목록 필드 추가하기[워드프레스]

들어가며

워드프레스에서 게시판으로 사용할만한 플러그인으로는 bbPress와 KBoard 정도인 것 같습니다. bbPress는 우리나라 스타일과 맞지 않기 때문에 많은 수정이 필요한 반면, KBoard는 약간의 수정으로 훌륭한 게시판을 워드프레스에 추가할 수 있습니다.

KBoard에서 글쓰기 버튼을 누르면 다음과 비슷한 글쓰기 화면이 표시됩니다.
KBoard default write form
여기에 테스트로 "Email" 필드(텍스트 입력 필드)와 "국가 선택" 필드를 추가해보겠습니다.

일반 텍스트 입력 필드 추가

KBoard에서 새로운 텍스트 입력 필드를 추가하려면 두 개의 파일(스킨 폴더 아래의 "editor.php"와 "document.php")을 수정해야 합니다. 먼저 다음 YouTube 동영상을 보시면 수정하는 방법이 자세히 설명되어 있습니다.

아래의 코드를 editor.php의 적당한 곳에 위치시킵니다. (<div class=”kboard-attr-row”>로 시작하는 부분 아래의 적당한 위치에 배치하시면 됩니다.)

예를들어 이메일 필드를 새로 추가하려는 경우 다음과 비슷한 코드를 editor.php에 추가합니다.

<label class="attr-name"><?php echo __('E-mail', 'kboard')?></label>
<div class="attr-value"><input type="text" name="kboard_option_email" value="<?php echo $content->option->email?>"></div>

그리고 마찬가지로 document.php에 아래와 비슷한 코드를 추가합니다. (document.php 파일에서 <?php echo $content->option-> 코드를 찾아서 다른 필드 아래에 추가)

<?php echo __('E-mail', 'kboard')?> : <?php echo $content->option->email?><br>

위의 두 과정을 통해 새로운 필드를 추가하면 KBoard 글쓰기 화면에 다음과 같이 이메일 입력란이 추가됩니다.
Kboard Email input

국가 목록 추가

다음으로 다음과 같은 국가 선택 드롭다운 필드를 추가하겠습니다.

국가 목록 드롭다운 필드를 추가하는 html 코드는 자료실에서 다운로드할 수 있습니다.

KBoard에서 필드를 추가하려면 위에서 설명한 일반 테스트 입력 필드를 추가하는 방법과 마찬가지로 파일 두 개를 수정해야 합니다. 원하는 스킨의 폴더(예: wp-contents > plugins > kboard > skin > avatar)에서 editor.php와 document.php 파일을 수정합니다.

먼저 editor.php 파일의 적당한 위치(가령 "연락처" 바로 아래 부분)에 다음과 비슷한 코드를 추가합니다. <div class="kboard-attr-row">로 시작하는 부분이 필드가 위치한 부분입니다.

<label class="attr-name"><?php echo __('Label_for_the_new_field', 'kboard')?></label>
<div class="attr-value">

<select name="kboard_option_newoptionID" value="<?php echo $content->option->newoptionID?>">

<option value="">--국가 선택--</option>
<option value="Ghana">가나</option>

//국가 목록 HTML 코드

</select>

</div>

위에서 'Label_for_the_new_field'은 원하는 라벨(가령 "국가")로 바꾸고 newoptionID는 적당한 이름(예: yourcountry)으로 수정합니다. 목록은 위와 같이 <option value="Ghana">가나</option> 형식으로 추가하시면 됩니다. 만약 드롭다운 목록이 아닌 일반 텍스트 입력 필드를 추가하려면 다음과 같은 코드를 추가하시면 됩니다(위의 "일반 텍스트 입력 필드 추가" 섹션 참조).

<div class="kboard-attr-row">
<label class="attr-name"><?php echo __('Label_for_the_new_field', 'kboard')?></label>
<div class="attr-value"><input type="text" name="kboard_option_newoptionID" value="<?php echo $content->option->newoptionID?>"></div>
</div>
</div>

다음으로 document.php 파일에 다음과 비슷한 코드를 추가합니다. document.php 파일에서 <?php echo $content->option-> 코드를 찾아서 다른 필드 아래에 추가하시면 됩니다.

<?php echo __('Label_for_the_new_field', 'kboard')?> : <?php echo $content->option->newoptionID?>

그러면 다음 그림과 비슷하게 국가 목록이 추가됩니다. 이와 비슷한 방식으로 다른 드롭다운 목록이나 텍스트 필드도 추가할 수 있습니다.

Added Country list in KBoard

그리고 CSS 코드를 통해 위와 같이 레이아웃도 수정이 가능합니다. (그림에서는 "국가 선택" 상자의 폭이 다른 입력상자보다 약간 좁은 데, 이것도 CSS 코드로 조정할 수 있습니다.)

업데이트:

위와 같은 형식으로 사용할 경우 "글수정"을 누르면 선택한 항목이 사라지는 문제가 발생합니다. 개별 option을 다음과 같은 형식을 사용하여 "selected"를 추가하도록 합니다.

<option value="Ghana"<?php if($content->option->location == 'Ghana'):?> selected<?php endif?>>가나</option>

그러면 글수정 시에도 값이 사라지는 현상이 사라질 것입니다.

마치며

KBoard는 의외로 확장성이 뛰어난 괜찮은 플러그인입니다. 약간의 커스터마이징으로 게시판의 전반적인 모양을 원하는 방식으로 변경이 가능합니다. 예를 들어, 조금의 PHP 소스 수정으로 갤러리와 비슷한 형태로도 변경할 수 있고, 원한다면 주문서 양식 대신에 KBoard를 사용한다면 원하는 정보를 입력받으면서 문의 목록을 일반인에게 공개하여 활발히 문의를 받고 있는 것을 보여줄 수 있을 것입니다.

참고


14개 댓글

  1. 잘봤습니다. 도움이되었어요 감사합니다. 혹시 이렇게 필드를 추가하게되면 케이보드에서 만든 모든 게시판들이 적용이되는데 하나의 게시판만 적용할수는없나요?

  2. 안녕하세요.

    초보자라서 그런가요.

    동영상보고 몇번 "Email" 추가 해보았는데요, 잘 안됩니다. ㅠㅠ

    KBoard 버전 5.0입니다.

     libwith.dothome.co.kr에  매뉴 "서비스채널" -> "문의게시판" 입니다.
    도움 부탁 드립니다.
    감사합니다.
    1. 안녕하세요?

      예전에 질문을 주셨는데, 충분한 답변이 되지 못했네요. 말씀하신 기능은 현재 KBoard에 없습니다. (아마 추후 버전에서 탑재될지도 모르겠네요.)

      해당 기능이 설정 등에는 없기 때문에 http://www.cosmosfarm.com/products/kboard/hooks 페이지를 참고하여 필터를 사용해서 프로그램을 만들어주어야 합니다. kboard_list_where 필터를 사용해서 쿼리를 수정해주시면 된다고 하네요.

댓글 남기기

* 이메일 주소는 공개되지 않습니다.