그누보드 게시판에 다중 카테고리 기능 적용하기 > 그누보드5 팁자료실

그누보드5 팁자료실

그누보드 게시판에 다중 카테고리 기능 적용하기 정보

그누보드 게시판에 다중 카테고리 기능 적용하기

본문

그누보드 게시판에서 다중 카테고리를 쓰기 위해서 어떻게 해야 할까요??? 그 방법을 정리해 봅니다.

참조스킨
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

댓글 4개

g4용이지만, 다중 카테고리 문제에 대한 해결책에 도움이 될 거 같은데.. 복잡하네요.

아래 2개링크는 복잡하지만 다중 검색이 가능한 좋은 예가 될 것같습니다. 명확히 정리를 하긴 해야겠네요.

https://sir.kr/g5_skin/18074

https://sir.kr/g5_plugin/1943
전체 17 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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