아래 내용은 그누보드 여분필드를 처음 접하는 분도 쉽게 따라 할 수 있도록 단계별로 자세히 설명한 튜토리얼입니다.
글쓰기 폼 수정, 데이터베이스 필드 추가, 실제 코드 예제까지 모두 포함하였으니 참고해보세요.
여분필드란 그누보드 게시판 테이블(`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 원) 의 나머지 금액을 지불 하여야합니다.
홈페이지 오류 수정요청시 | 홈페이지 디자인 변경 요청시 |
---|---|
무료수정 | 별도협의 |