게시판 카테고리 중복 체크 가능하게 하기 정보
게시판 카테고리 중복 체크 가능하게 하기본문
기존에 팁에 올라왔던게 있었는데
리스트에서는 어떻게 처리할지 고민하다가 제가 해결한 방법 올립니다.
ca_name 방식으로 불러오는것이 아닌 sca로 불러오도록 하였습니다.
1. 해당 게시판 스킨의 write.skin.php 파일 카테고리 부분을 아래와 같이 변경
<tr>
<th>카테고리</th>
<td>
<?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>
</td>
</tr>
2. write_update.head.skin.php 파일 생성
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$ca_name='';
foreach($_POST[chk_ca_name] as $var) {
$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 */
} //추가
해당게시판에서만 분류 선택을 안하더라도 경고창 안뜨게 했습니다.
체크박스로 바꾸니 값이 없는것처럼 받아들여서 일단은 해당 스킨에서는 분류가 필수값이 아니도록 설정했는데 일반 회원들이 글을 쓰게 하는 게시판의 경우에는 조금 더 손을 보셔야할것 같습니다.
!-->!-->!-->!-->!-->!-->!-->
추천
6
6
댓글 8개
유용한 정보네요 공개해 주셔서 감사합니다.
평소에 많이 궁금했는데 .
너무 감사합니다~~
한번 적용해서 사용해보겠습니다~~^^*
너무 감사합니다~~
한번 적용해서 사용해보겠습니다~~^^*
유용한 정보 감사합니다.
사전스킨 만들려고 적용시켜봤는데 잘 작동되네요.
정보 감사합니다. ^^
정보 감사합니다. ^^
검색까지 생각하면
lib/common.lib.php도 수정해야 합니다.
// 검색 구문을 얻는다.
function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator='and')
{
global $g5;
$str = "";
if ($search_ca_name)
$str = " ca_name like '%{$search_ca_name}%' ";
완전한 방법은 아닙니다.
2개 이상의 카테고리 지정 방식은 set이나 bit 방식으로 하는 것을 추천합니다.
lib/common.lib.php도 수정해야 합니다.
// 검색 구문을 얻는다.
function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator='and')
{
global $g5;
$str = "";
if ($search_ca_name)
$str = " ca_name like '%{$search_ca_name}%' ";
완전한 방법은 아닙니다.
2개 이상의 카테고리 지정 방식은 set이나 bit 방식으로 하는 것을 추천합니다.
와우 찾고 있던 건데 너무 감사해요 ㅠㅠ!!!
다중 분류선택 카테고리
lib/common.lib.php에서
// 검색 구문을 얻는다.
function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator='and')
{
global $g5;
global $bo_table;
$str = "";
if ($search_ca_name)
$str = " ca_name = '$search_ca_name' ";
if($search_ca_name && $bo_table == 'gallery') // bo_table 값에 쓰실 게시판주소bo_table값작성
{
$str = " ca_name LIKE '%$search_ca_name%' ";
}
// 검색 구문을 얻는다.
function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator='and')
{
global $g5;
global $bo_table;
$str = "";
if ($search_ca_name)
$str = " ca_name = '$search_ca_name' ";
if($search_ca_name && $bo_table == 'gallery') // bo_table 값에 쓰실 게시판주소bo_table값작성
{
$str = " ca_name LIKE '%$search_ca_name%' ";
}