그누보드 게시판에 다중 카테고리 기능 적용하기 정보
그누보드 게시판에 다중 카테고리 기능 적용하기본문
그누보드 게시판에서 다중 카테고리를 쓰기 위해서 어떻게 해야 할까요??? 그 방법을 정리해 봅니다.
참조스킨
http://www.sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=56810
이것은 지니아빠님의 스킨을 참조로 만들어진 것 입니다.
http://www.sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=19471
(1) 사용할 카테고리의 갯수를 설정하고 사용할 확장 필드를 선택
3중 카테고리를 사용할 경우에는 확장할 카테고리 2개를 추가하고
wr_5, wr_4를 사용하기로 했을 경우 다음과 같이 원본을 수정 합니다.
2중 카테고리를 사용할 경우에는 wr_5 1개만 쓰면 되는 것이고
4중 카테고리를 사용할 경우에는 wr_5, wr_4, wr_3 3개를 써야 하는 것 입니다.
원본이 수정되었기 때문에 wr_5, wr_4에 저장된 것은 sca와 같이 쉽게 검색이 가능 합니다.
다른 스킨에서 쓰더라도 중요한 것은 절대 넣으면 안되고, 검색과 공개가 가능한 것들만
넣어야 합니다.
1. 설치폴더/lib/common.lib.php 486 라인
global $g4, $wr_5, $wr_4;
$str = "";
if ($search_ca_name) {
$str = " ca_name = '$search_ca_name' ";
}
if ($wr_5) {
if ($str) {
$str = "(" . $str . " and wr_5 = '$wr_5') ";
} else {
$str = " wr_5 = '$wr_5' ";
}
}
if ($wr_4) {
if ($str) {
$str = "(" . $str . " and wr_4 = '$wr_4') ";
} else {
$str = " wr_4 = '$wr_4' ";
}
}
2. 설치폴더/bbs/list.php
18, 71, 108, 127 라인
if ($wr_5 || $wr_4 || $sca || $stx )
87 라인
if (!$wr_5 && !$wr_4 && !$sca && !$stx)
(2) 해당 스킨의 list.skin.php를 수정 합니다.
앞부분에 아래와 같이 카테고리 값을 설정하는 코드를 삽입 합니다.
function get_bo_n_option($bo_n='')
{
global $g4, $board;
$arr = explode("|", $board[$bo_n]); // 구분자가 | 로 되어 있음
$str = "";
for ($i=0; $i<count($arr); $i++)
if (trim($arr[$i]))
$str .= "<option value='$arr[$i]'>$arr[$i]</option>\n";
return $str;
}
// 분류 사용 여부 list.php에서 참조 (카테고리가 없는 경우에는 이것은 절대 비활성화)
if ($is_category = true) {
$bo_5_option = get_bo_n_option('bo_5'); // SELECT OPTION 태그로 넘겨받음
$bo_4_option = get_bo_n_option('bo_4'); // SELECT OPTION 태그로 넘겨받음
}
적당한 곳에 카테고리 링크를 삽입 합니다.
<? if ($is_category) { ?>
<form name="fcategory" method="get">
<td>
<a href="<?=$g4[bbs_path]?>/board.php?bo_table=<?=$bo_table?>"><img src="<?=$board_skin_path?>/img/btn_list.gif" border="0" align=absmiddle></a>
<select name=sca onchange="location='<?=$category_location?>&sca='+this.value+'&wr_5='+this.form.wr_5.value+'&wr_4='+this.form.wr_4.value;">
<option value=''>분류선택</option><?=$category_option?></select>
<select name=wr_4 onchange="location='<?=$category_location?>&sca='+this.form.sca.value+'&wr_5='+this.form.wr_5.value+'&wr_4='+this.value;">
<option value=''><?=$board[bo_4_subj]?></option><?=$bo_4_option?></select>
<select name=wr_5 onchange="location='<?=$category_location?>&sca='+this.form.sca.value+'&wr_4='+this.form.wr_4.value+'&wr_5='+this.value;">
<option value=''><?=$board[bo_5_subj]?></option><?=$bo_5_option?></select>
</td>
</form>
<? } ?>
하단부에 선택한 값이 저장되도록 코드를 추가 합니다.
<script language="JavaScript">
if ('<?=$sca?>') document.fcategory.sca.value = '<?=$sca?>';
if ('<?=$wr_5?>') document.fcategory.wr_5.value = '<?=$wr_5?>';
if ('<?=$wr_4?>') document.fcategory.wr_4.value = '<?=$wr_4?>';
if ('<?=$stx?>') {
document.fsearch.sfl.value = '<?=$sfl?>';
document.fsearch.sop.value = '<?=$sop?>';
}
</script>
(3) 해당스킨의 write.skin.php를 수정 합니다.
앞부분에 아래와 같이 카테고리 값을 설정하는 코드를 삽입 합니다.
function get_bo_n_option($bo_n='')
{
global $g4, $board;
$arr = explode("|", $board[$bo_n]); // 구분자가 | 로 되어 있음
$str = "";
for ($i=0; $i<count($arr); $i++)
if (trim($arr[$i]))
$str .= "<option value='$arr[$i]'>$arr[$i]</option>\n";
return $str;
}
// 분류 사용 여부 list.php에서 참조 (카테고리가 없는 경우에는 이것은 절대 비활성화)
if ($is_category = true) {
$bo_5_option = get_bo_n_option('bo_5'); // SELECT OPTION 태그로 넘겨받음
$bo_4_option = get_bo_n_option('bo_4'); // SELECT OPTION 태그로 넘겨받음
}
적당한 곳에 카테고리 값을 설정하는 코드를 삽입합니다.
<? if ($is_category) { ?>
<tr>
<td style='padding-left:20px; height:30px;'>· 분류</td>
<td><select name=ca_name required itemname="분류"><option value="">선택하세요<?=$category_option?></select>
<?=$board[bo_4_subj]?>: <select class="ed" name="wr_4" required="required" itemname='<?=$board[bo_4_subj]?>' value="<?=$write[wr_4]?>">
<?
if ($write[wr_4]){
echo "<option selected value='$write[wr_4]'>$write[wr_4]</option>";
} else {
echo "<option selected value=''>선택하세요</option>";
}
echo "$bo_4_option";
echo "</select>";
?>
<?=$board[bo_5_subj]?>: <select class="ed" name="wr_5" required="required" itemname='<?=$board[bo_5_subj]?>' value="<?=$write[wr_5]?>">
<?
if ($write[wr_5]){
echo "<option selected value='$write[wr_5]'>$write[wr_5]</option>";
} else {
echo "<option selected value=''>선택하세요</option>";
}
echo "$bo_5_option";
echo "</select>";
?>
</td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>
view.skin.php 등은 위 코드를 보면서 쉽게 수정가능할 것 입니다. list.view.write 3개의
스킨만 수정하고 원본을 수정하면 어디에서든 3중 카테고리 게시판이 가능해지는 것이죠.
- opencode.co.kr -
참조스킨
http://www.sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=56810
이것은 지니아빠님의 스킨을 참조로 만들어진 것 입니다.
http://www.sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=19471
(1) 사용할 카테고리의 갯수를 설정하고 사용할 확장 필드를 선택
3중 카테고리를 사용할 경우에는 확장할 카테고리 2개를 추가하고
wr_5, wr_4를 사용하기로 했을 경우 다음과 같이 원본을 수정 합니다.
2중 카테고리를 사용할 경우에는 wr_5 1개만 쓰면 되는 것이고
4중 카테고리를 사용할 경우에는 wr_5, wr_4, wr_3 3개를 써야 하는 것 입니다.
원본이 수정되었기 때문에 wr_5, wr_4에 저장된 것은 sca와 같이 쉽게 검색이 가능 합니다.
다른 스킨에서 쓰더라도 중요한 것은 절대 넣으면 안되고, 검색과 공개가 가능한 것들만
넣어야 합니다.
1. 설치폴더/lib/common.lib.php 486 라인
global $g4, $wr_5, $wr_4;
$str = "";
if ($search_ca_name) {
$str = " ca_name = '$search_ca_name' ";
}
if ($wr_5) {
if ($str) {
$str = "(" . $str . " and wr_5 = '$wr_5') ";
} else {
$str = " wr_5 = '$wr_5' ";
}
}
if ($wr_4) {
if ($str) {
$str = "(" . $str . " and wr_4 = '$wr_4') ";
} else {
$str = " wr_4 = '$wr_4' ";
}
}
2. 설치폴더/bbs/list.php
18, 71, 108, 127 라인
if ($wr_5 || $wr_4 || $sca || $stx )
87 라인
if (!$wr_5 && !$wr_4 && !$sca && !$stx)
(2) 해당 스킨의 list.skin.php를 수정 합니다.
앞부분에 아래와 같이 카테고리 값을 설정하는 코드를 삽입 합니다.
function get_bo_n_option($bo_n='')
{
global $g4, $board;
$arr = explode("|", $board[$bo_n]); // 구분자가 | 로 되어 있음
$str = "";
for ($i=0; $i<count($arr); $i++)
if (trim($arr[$i]))
$str .= "<option value='$arr[$i]'>$arr[$i]</option>\n";
return $str;
}
// 분류 사용 여부 list.php에서 참조 (카테고리가 없는 경우에는 이것은 절대 비활성화)
if ($is_category = true) {
$bo_5_option = get_bo_n_option('bo_5'); // SELECT OPTION 태그로 넘겨받음
$bo_4_option = get_bo_n_option('bo_4'); // SELECT OPTION 태그로 넘겨받음
}
적당한 곳에 카테고리 링크를 삽입 합니다.
<? if ($is_category) { ?>
<form name="fcategory" method="get">
<td>
<a href="<?=$g4[bbs_path]?>/board.php?bo_table=<?=$bo_table?>"><img src="<?=$board_skin_path?>/img/btn_list.gif" border="0" align=absmiddle></a>
<select name=sca onchange="location='<?=$category_location?>&sca='+this.value+'&wr_5='+this.form.wr_5.value+'&wr_4='+this.form.wr_4.value;">
<option value=''>분류선택</option><?=$category_option?></select>
<select name=wr_4 onchange="location='<?=$category_location?>&sca='+this.form.sca.value+'&wr_5='+this.form.wr_5.value+'&wr_4='+this.value;">
<option value=''><?=$board[bo_4_subj]?></option><?=$bo_4_option?></select>
<select name=wr_5 onchange="location='<?=$category_location?>&sca='+this.form.sca.value+'&wr_4='+this.form.wr_4.value+'&wr_5='+this.value;">
<option value=''><?=$board[bo_5_subj]?></option><?=$bo_5_option?></select>
</td>
</form>
<? } ?>
하단부에 선택한 값이 저장되도록 코드를 추가 합니다.
<script language="JavaScript">
if ('<?=$sca?>') document.fcategory.sca.value = '<?=$sca?>';
if ('<?=$wr_5?>') document.fcategory.wr_5.value = '<?=$wr_5?>';
if ('<?=$wr_4?>') document.fcategory.wr_4.value = '<?=$wr_4?>';
if ('<?=$stx?>') {
document.fsearch.sfl.value = '<?=$sfl?>';
document.fsearch.sop.value = '<?=$sop?>';
}
</script>
(3) 해당스킨의 write.skin.php를 수정 합니다.
앞부분에 아래와 같이 카테고리 값을 설정하는 코드를 삽입 합니다.
function get_bo_n_option($bo_n='')
{
global $g4, $board;
$arr = explode("|", $board[$bo_n]); // 구분자가 | 로 되어 있음
$str = "";
for ($i=0; $i<count($arr); $i++)
if (trim($arr[$i]))
$str .= "<option value='$arr[$i]'>$arr[$i]</option>\n";
return $str;
}
// 분류 사용 여부 list.php에서 참조 (카테고리가 없는 경우에는 이것은 절대 비활성화)
if ($is_category = true) {
$bo_5_option = get_bo_n_option('bo_5'); // SELECT OPTION 태그로 넘겨받음
$bo_4_option = get_bo_n_option('bo_4'); // SELECT OPTION 태그로 넘겨받음
}
적당한 곳에 카테고리 값을 설정하는 코드를 삽입합니다.
<? if ($is_category) { ?>
<tr>
<td style='padding-left:20px; height:30px;'>· 분류</td>
<td><select name=ca_name required itemname="분류"><option value="">선택하세요<?=$category_option?></select>
<?=$board[bo_4_subj]?>: <select class="ed" name="wr_4" required="required" itemname='<?=$board[bo_4_subj]?>' value="<?=$write[wr_4]?>">
<?
if ($write[wr_4]){
echo "<option selected value='$write[wr_4]'>$write[wr_4]</option>";
} else {
echo "<option selected value=''>선택하세요</option>";
}
echo "$bo_4_option";
echo "</select>";
?>
<?=$board[bo_5_subj]?>: <select class="ed" name="wr_5" required="required" itemname='<?=$board[bo_5_subj]?>' value="<?=$write[wr_5]?>">
<?
if ($write[wr_5]){
echo "<option selected value='$write[wr_5]'>$write[wr_5]</option>";
} else {
echo "<option selected value=''>선택하세요</option>";
}
echo "$bo_5_option";
echo "</select>";
?>
</td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>
view.skin.php 등은 위 코드를 보면서 쉽게 수정가능할 것 입니다. list.view.write 3개의
스킨만 수정하고 원본을 수정하면 어디에서든 3중 카테고리 게시판이 가능해지는 것이죠.
- opencode.co.kr -
추천
0
0
댓글 4개
그누보드 5.3에도 적용 가능할까요?
g4용이지만, 다중 카테고리 문제에 대한 해결책에 도움이 될 거 같은데.. 복잡하네요.
아래 2개링크는 복잡하지만 다중 검색이 가능한 좋은 예가 될 것같습니다. 명확히 정리를 하긴 해야겠네요.
https://sir.kr/g5_skin/18074
https://sir.kr/g5_plugin/1943
아래 2개링크는 복잡하지만 다중 검색이 가능한 좋은 예가 될 것같습니다. 명확히 정리를 하긴 해야겠네요.
https://sir.kr/g5_skin/18074
https://sir.kr/g5_plugin/1943
감사합니다
고생하셨습니다.