View

카테고리 중복 체크하기

수퍼곰탱이 2020. 4. 1. 02:12

1. 해당 게시판 스킨의 write.skin.php 파일 카테고리 부분을 아래와 같이 변경

<ul>
  <li>카테고리</li>
  <li>
    <?php
      $arr = explode("|",$board['bo_category_list']);
      foreach($arr as $str) { 
    ?>
    <input type="checkbox" name="chk_ca_name[]" value="<?php echo $str; ?>"> <?php echo $str; ?>
    <?php } ?>
    <script>
      var f = document.fwrite;
        var str=",<?php echo $write[ca_name]?>,";
          for (var i=0; i<f.length; i++) {
            if (f.elements[i].name == "chk_ca_name[]") {
            if (str.indexOf(','+f.elements[i].value+',')>=0) {
            f.elements[i].checked = true;
          }
        }
      }
    </script>
  </li>
</ul>

 

2. write_update.head.skin.php 파일 생성

<?php
  if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
    $ca_name='';
    foreach($_POST[chk_ca_name] as $var) {
    &nbsp;$ca_name.=",$var";
    }
  if (strlen($ca_name)) $ca_name=substr($ca_name,1);
?>

 

3. bbs/list.php에서 아래부분(11번째줄쯤)

if ($sca=='')
	$category_option .= ' id="bo_cate_on"'; 

아래와 같이 변경 (&& stx==''추가)

if ($sca=='' && $stx=='') 
	$category_option .= ' id="bo_cate_on"';

 

4. bbs/list.php에서 아래부분(17~27번째줄쯤)

for ($i=0; $i<count($categories); $i++) {
            $category = trim($categories[$i]);
            if ($category=='') continue;
            $category_option .= '<li><a href="'.($category_href."&sca=".urlencode($category)).'"';
            $category_msg = '';
            if ($category==$sca) { // 현재 선택된 카테고리라면
                $category_option .= ' id="bo_cate_on"';
                $category_msg = '<span class="sound_only">열린 분류 </span>';
            }
            $category_option .= '>'.$category_msg.$category.'</a></li>';
        }

아래 소스로 교체해주세요. 

 if ($bo_table == "게시판아이디") {

        for ($i=0; $i<count($categories); $i++) {
                $category = trim($categories[$i]);
                if ($category=='') continue;
                $category_option .= '<li><a href="'.($category_href."&sfl=ca_name%2C1&&stx=".urlencode($category)).'&sop=or"'; 
                $category_msg = '';
                if ($category==$stx) {
                    $category_option .= ' id="bo_cate_on"';
                    $category_msg = '<span class="sound_only">열린 분류</span>';
                }
                $category_option .= '>'.$category_msg.$category.'</a></li>';
        }
      } else {
          /* original */
          for ($i=0; $i<count($categories); $i++) {
            $category = trim($categories[$i]);
            if ($category=='') continue;
            $category_option .= '<li><a href="'.($category_href."&sca=".urlencode($category)).'"';
            $category_msg = '';
            if ($category==$sca) { // 현재 선택된 카테고리라면
                $category_option .= ' id="bo_cate_on"';
                $category_msg = '<span class="sound_only">열린 분류 </span>';
            }
            $category_option .= '>'.$category_msg.$category.'</a></li>';
        }
           /* original */
      }

 

5. bbs/write_update.php 에서 if($board['bo_use_category']) { } 위아래를 if ($bo_table !== "게시판아이디") { }로 감싸주세요.

if ($bo_table !== "게시판아이디") {  //추가
 
        /* original */
        if($board['bo_use_category']) {
       
            $ca_name = trim($_POST['ca_name']);
            if(!$ca_name) {
                $msg[] = '<strong>분류</strong>를 선택하세요.';
            } else {
                $categories = array_map('trim', explode("|", $board['bo_category_list'].($is_admin ? '|공지' : '')));
                if(!empty($categories) && !in_array($ca_name, $categories))
                    $msg[] = '분류를 올바르게 입력하세요.';
       
                if(empty($categories))
                    $ca_name = '';
            }
       
        } else {
            $ca_name = '';
       
        }
       /* original */
   
}  //추가

 

https://sir.kr/g5_tip/12256

 

게시판 카테고리 중복 체크 가능하게 하기 > SIR

기존에 팁에 올라왔던게 있었는데

리스트에서는 어떻게 처리할지 고민하다가 제가 해결한 방법 올립니다.

 

ca_name 방식으로 불러오는것이 아닌 sca로 불러오도록 하였습니다.

 



 

 

1. 해당 게시판 스킨의 write.skin.php 파일 카테고리 부분을 아래와 같이 변경

sir.kr

 

Share Link
reply
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30