
아래 내용은 그누보드 여분필드를 처음 접하는 분도 쉽게 따라 할 수 있도록 단계별로 자세히 설명한 튜토리얼입니다.
글쓰기 폼 수정, 데이터베이스 필드 추가, 실제 코드 예제까지 모두 포함하였으니 참고해보세요.
여분필드란 그누보드 게시판 테이블(`g5_write_게시판이름`)에 기본으로 존재하는 wr_1 ~ wr_10 필드를 말합니다.
기본 게시판 기능으로는 제목(wr_subject), 내용(wr_content) 등을 입력받을 수 있지만, 추가적인 정보를 입력받고 싶을 때 이 여분필드를 이용하면 편리합니다.
board)을 찾아 수정 버튼 클릭wr_1 ~ wr_10 중 사용할 필드를 골라 설명(필드의 의미)를 적어주기wr_1: 전화번호Tip: 이미 다른 여분필드를 사용 중이라면, 그 필드가 겹치지 않도록 주의하세요!
기본적으로 그누보드는 wr_1 ~ wr_10까지 10개의 여분필드를 제공하지만, 이 10개마저도 부족할 경우가 있습니다. 그런 경우 데이터베이스 테이블에 새로운 필드를 추가하여 확장 가능합니다.
g5_write_게시판이름)을 찾는다. (예: g5_write_board)아래는 SQL로 필드를 추가하는 예시입니다.
ALTER TABLE `g5_write_board`
ADD `wr_extra` VARCHAR(255) NOT NULL;
g5_write_board: 수정하려는 게시판 테이블명wr_extra: 새로 추가할 필드명 (자유롭게 작명 가능)VARCHAR(255): 데이터 타입 및 크기주의: 추가로 생성한 필드는 그누보드 기본 관리 화면에서는 보이지 않으므로, 폼 수정 및 값 저장 시 직접 코드를 수정해야 합니다.
list.skin.php 또는 list.php)에서 $list[$i]['wr_번호'] 형태로 값을 불러올 수 있습니다.<!-- 게시판 리스트를 루프 돌며 출력하는 부분 -->
<?php for ($i=0; $i<count($list); $i++) { ?>
<tr>
<td><?php echo $list[$i]['wr_subject']; ?></td>
<td><?php echo $list[$i]['wr_name']; ?></td>
<!-- 여분필드 wr_1 출력 -->
<td><?php echo $list[$i]['wr_1']; ?></td>
</tr>
<?php } ?>
이렇게 하면 게시글 목록에서 각 글의 wr_1 값이 표시됩니다.
view.skin.php 또는 view.php)에서 $write['wr_번호'] 형태로 값을 불러옵니다.<!-- 게시글 제목, 내용 등의 기본 정보 출력 부분 -->
<h1><?php echo $view['subject']; ?></h1>
<p><?php echo $view['content']; ?></p>
<!-- 여분필드 wr_2 출력 -->
<p>회사명: <?php echo $write['wr_2']; ?></p>
$write['wr_2'] 또는 $view['wr_2'] 둘 다 사용 가능하나, 스킨별로 변수 설정 방식이 다를 수 있으므로, $write 혹은 $view 중 어떤 배열로 제공되는지 확인 후 사용하세요.
글쓰기(또는 수정) 시 사용자가 입력한 여분필드를 받으려면 write.skin.php 파일에서 입력 폼을 추가해야 합니다.
아래는 다양한 입력 타입별 예시입니다.
<!-- wr_1: 일반 텍스트 입력 -->
<tr>
<th scope="row">전화번호</th>
<td>
<input type="text" name="wr_1" value="<?php echo get_text($write['wr_1']); ?>">
</td>
</tr>
<!-- wr_2: 체크박스 예시 -->
<tr>
<th scope="row">옵션 선택</th>
<td>
<input type="checkbox" name="wr_2[]" value="옵션1"
<?php if(strpos($write['wr_2'], '옵션1') !== false) echo "checked"; ?>> 옵션1
<input type="checkbox" name="wr_2[]" value="옵션2"
<?php if(strpos($write['wr_2'], '옵션2') !== false) echo "checked"; ?>> 옵션2
</td>
</tr>
<!-- wr_3: 라디오 버튼 예시 -->
<tr>
<th scope="row">성별</th>
<td>
<input type="radio" name="wr_3" value="남성"
<?php if($write['wr_3'] == '남성') echo "checked"; ?>> 남성
<input type="radio" name="wr_3" value="여성"
<?php if($write['wr_3'] == '여성') echo "checked"; ?>> 여성
</td>
</tr>
<!-- wr_4: 셀렉트 박스 예시 -->
<tr>
<th scope="row">분류 선택</th>
<td>
<select name="wr_4">
<option value="카테고리1" <?php if($write['wr_4'] == '카테고리1') echo "selected"; ?>>카테고리1</option>
<option value="카테고리2" <?php if($write['wr_4'] == '카테고리2') echo "selected"; ?>>카테고리2</option>
</select>
</td>
</tr>
<!-- wr_5: 날짜 입력 -->
<tr>
<th scope="row">시작 날짜</th>
<td>
<input type="date" name="wr_5" value="<?php echo $write['wr_5']; ?>">
</td>
</tr>
<!-- wr_6: 파일 업로드 -->
<tr>
<th scope="row">첨부 파일</th>
<td>
<input type="file" name="wr_6">
<!-- 이미 업로드된 파일이 있을 경우 표시 -->
<?php if($write['wr_6']) { ?>
<p>현재 파일: <?php echo $write['wr_6']; ?></p>
<?php } ?>
</td>
</tr>
중요: 파일 업로드 필드(wr_6 등)를 사용하려면, 그누보드 기본 파일 업로드 로직과 충돌되지 않도록 별도 로직이 필요할 수 있습니다. 기본 게시판에서 제공하는 파일첨부 기능과 혼동되지 않도록 주의하세요.
write.skin.php에서 name="wr_1"과 같이 여분필드를 추가했다면, 그누보드의 기본 로직(write_update.php)에서 자동으로 wr_1 ~ wr_10에 대한 DB 저장을 처리해줍니다.
즉, 기본 여분필드는 특별한 추가 코드 수정 없이도 자동으로 저장됩니다.
// (참고) write_update.php 내 일부 로직
// ... 생략 ...
$wr_1 = $_POST['wr_1'];
$wr_2 = $_POST['wr_2'];
// ... 생략 ...
$sql = " update `{$write_table}`
set wr_subject = '$wr_subject',
wr_content = '$wr_content',
wr_1 = '$wr_1',
wr_2 = '$wr_2',
...
where wr_id = '$wr_id' ";
// ... 생략 ...
따라서 wr_1 ~ wr_10 필드만 사용하는 경우에는 write_update.php를 수정하지 않아도 자동으로 저장됩니다.
직접 DB에 새로운 필드(wr_extra 등)를 추가했다면, 기본 게시판 로직에선 해당 필드를 저장하지 않습니다.
이 경우, write_update.php나 플러그인 형식(함수나 테마 내 hook)에 추가 코드를 넣어야 합니다.
아래는 예시 코드입니다.
// write_update.php의 글 저장 부분(예시)
// 일반적인 그누보드 구조를 기반으로 설명합니다.
// 1) GET, POST 값 가져오기
$wr_extra = isset($_POST['wr_extra']) ? trim($_POST['wr_extra']) : "";
// 2) SQL 구문에 wr_extra 반영
$sql = " update `{$write_table}`
set wr_subject = '$wr_subject',
wr_content = '$wr_content',
wr_extra = '$wr_extra', /* 새로 추가한 필드 */
wr_ip = '$remote_addr'
where wr_id = '$wr_id' ";
sql_query($sql);
참고: wr_extra 필드를 글쓰기/수정 폼에도 추가해야 합니다. 예) <input type="text" name="wr_extra" ...>
wr_1의 라벨 지정
- [게시판 관리] → [게시판 설정]으로 이동 후, 여분필드 wr_1을 전화번호로 적어둡니다. (라벨 역할)
write.skin.php) 수정<tr>
<th scope="row">전화번호</th>
<td>
<input type="text" name="wr_1" value="<?php echo get_text($write['wr_1']); ?>">
</td>
</tr>
view.skin.php)에서 출력<?php
echo "작성자 전화번호: " . $write['wr_1'];
?>
완료!
이제 글 작성 시, 사용자가 입력한 전화번호가 DB에 자동 저장되고, 본문에서도 확인 가능합니다.
wr_2를 관심사로 설정)<!-- write.skin.php -->
<tr>
<th scope="row">관심사</th>
<td>
<input type="checkbox" name="wr_2[]" value="스포츠"
<?php if(strpos($write['wr_2'], '스포츠') !== false) echo "checked"; ?>> 스포츠
<input type="checkbox" name="wr_2[]" value="음악"
<?php if(strpos($write['wr_2'], '음악') !== false) echo "checked"; ?>> 음악
<input type="checkbox" name="wr_2[]" value="여행"
<?php if(strpos($write['wr_2'], '여행') !== false) echo "checked"; ?>> 여행
</td>
</tr>
write_update.php에서는 체크박스를 콤마로 구분하거나, PHP 배열로 implode() 하여 저장하는 방식을 사용합니다.// write.skin.php
// <input type="checkbox" name="wr_2[]" value="스포츠">
//
// write_update.php
if (is_array($_POST['wr_2'])) {
$wr_2 = implode(',', $_POST['wr_2']);
} else {
$wr_2 = $_POST['wr_2'];
}
// 이후 wr_2 필드에 $wr_2값 저장
view.skin.php)<?php
$interest_arr = explode(',', $write['wr_2']);
foreach($interest_arr as $interest) {
echo "<span>{$interest}</span> ";
}
?>
wr_1~wr_10을 넘어서는 필드는 어떻게 추가하나요?g5_write_board)에 직접 필드를 추가하고, write_update.php에서 수동으로 처리해야 합니다.
wr_1~wr_10은 작동합니다.
wr_1~wr_10을 다 설정해도 스킨에 폼이 없으면 저장이 안 되나요?<input> 또는 <textarea> 등이 있어야 사용자가 입력할 수 있습니다. 폼이 없다면 사용자 입력 자체가 없으므로 DB에 저장될 값이 없음을 유의하세요.
wr_1 ~ wr_10 등 각 필드를 적절히 분배하여 사용하고, write.skin.php에서 맞춤형 폼을 만들면 됩니다.
write.skin.php)에 원하는 입력 폼을 추가하면 자동으로 DB에 저장됩니다. (단, wr_1~wr_10 범위 내)write_update.php 등에 저장 로직을 추가하세요.여분필드를 잘 활용하면, 별도의 플러그인이나 추가 개발 없이도 여러 가지 맞춤형 기능을 간단히 구현할 수 있습니다.
이상으로 그누보드 여분필드를 활용하는 방법을 초보자도 쉽게 따라 할 수 있도록 설명해 보았습니다.
게시판 확장이 필요할 때 가장 먼저 고려해볼 수 있는 방법이니, 직접 시도해보시고 궁금한 점이 있으면 공식 커뮤니티나 관련 매뉴얼을 참고해보세요.
즐거운 그누보드 개발 되시길 바랍니다!
본인의 웹호스팅 계정을 이용하여 사용합니다.
홈페이지 오류 및 버그 발견시 1:1문의를 남겨주시면 확인 후 바로 무상 처리해드립니다.
다운받는 홈페이지라는 특성상 단순변심으로 인한 환불은 불가합니다.
사진 및 컨텐츠는 사용자의 이해를 돕기위해 사용된것이며 실사용은 가능하나 재배포를 금지합니다.
1도메인당 1카피를 원칙으로 하고있습니다.
티로그 × 단비웹 호스팅 이용시 공급원가(800,000 원)로 구매를 하실수도 있습니다.
설치대행의 경우 기본 셋팅비 10,000원 이며 디자인 변경 요청시 추가금액이 발생될 수 있습니다.
호스팅 만료시 사용하신 홈페이지 ,도메인은(는) 영구 삭제 되며, 타사 호스팅 이용시 공급원가(800,000 원) - 제공가격(400,000 원) 의 나머지 금액을 지불 하여야합니다.
| 홈페이지 오류 수정요청시 | 홈페이지 디자인 변경 요청시 |
|---|---|
| 무료수정 | 별도협의 |