채택완료

관리자만 분류사용하기에서...

안녕하세요.

 

쓴 글에 대해 관리자가 분류를 선택해서 지정하는 게시판 입니다.

그래서 일반 유저는 글쓰기 할때 분류를 선택할 이유가 없어서

관리자만 쓴 글에 대해 분류를 해주려고 이곳 Q&A 게시판에서 소스를 보고 수정은 했습니다.

그런데...

비 회원이 글을쓰면

"분류를 선택하세요"라고 나옵니다.

 

해결 방법이 있을까요?

 

참고 사이트

https://url.kr/bbs/board.php?bo_table=cL2an_si72_x76x

 

답변 2개 / 댓글 4개

채택된 답변
+20 포인트

게시판을 보니 글을 쓰면 신청으로 가야 할거 같은데 글쓰기이고 관리자가 아니면 분류 기본값을 신청으로 주시면 될거 같습니다.

답변에 대한 댓글 2개

소중한 의견 감사합니다.

오늘 수정 하기 전까지는
글쓰는 사람이 카테고리에서 [신청]을 선택 후
관리자가 [완료] 로 변경 했었습니다.

그런데 생각해보니 글쓰는 사람은 당연히 모두 신청하는 것이니 이 단계를 빼고
관리자가 신청한 것을 [완료] / [거절] 이렇게 선택해서 업데이트 하기로 했습니다.

그래서
1) 카테고리 사용으로 체크
2) 관리자만 카테고리 기능 사용하기

이렇게 하고 싶어서 아래 팁을 이용해서 적용했습니다.
https://sir.kr/qa/169959

그런데 문제는 비회원이 글을쓸때 카테고리를 선택해 주세라고 나오는 상황입니다.
의견 감사합니다. 해결 했습니다.

아래에서 "대기" 를 제 사이트 분류 값에 맞게 수정 했어야 하는데 수정을 안해서 생긴 문제 였습니다.

<!-- 신규 입력시 기본 분류값 대기 입력 -->
<input type="hidden" name="ca_name" id="ca_name" value="대기">

bbs/write_update.php 파일에서 16행에 걸리시는 것 같습니다.

Copy
if($board['bo_use_category']) {

$ca_name = isset($_POST['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($board['bo_use_category']) {

$ca_name = isset($_POST['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 = '';

}

게시판 설정이 카테고리 사용일 경우 카테고리값을 가지고 들어오지 않으면 거르는 부분인데요.
 

제가 알기로 게시판 설정에서 카테고리 사용을 체크하지 않아도 폼에서 전송된 값이 있으면 저장되는 걸로 알고 있어요.

지금 확인해볼수는 없지만 위 내용이 맞다면, 게시판 설정에서 카테고리 사용을 체크해제 하시고

게시판 글쓰기 스킨 파일에서 <input type="hidden" name="ca_name" value="카테고리기본값"> 으로 해놓으시면 되지 않을까 싶네요.  그리고 관리자일 경우에는 카테고리를 수동으로 가져와서 변경해서 사용할 수 있도록 변경하면 되지 않을까 싶습니다.

 

Copy
<?php

if ($is_admin) {

$ca_name = "";

if (isset($write['ca_name']))

$ca_name = $write['ca_name'];

$category_option = get_category_option($bo_table, $ca_name);

?>

<div class="bo_w_select write_div">

<label for="ca_name" class="sound_only">분류<strong>필수</strong></label>

<select name="ca_name" id="ca_name" required>

<option value="">분류를 선택하세요</option>

<?php echo $category_option ?>

</select>

</div>

<?php } else { ?>

<input type="hidden" name="ca_name" value="기본값">

<?php } ?>

이런식으로요 ㅎㅎ 파이팅

답변에 대한 댓글 2개

다른 방식으로 접근이네요. 좋은 팁 감사합니다. 팁 게시판에 올려보시는건 어떠세요?
특수한 상황에서만 쓰일거라...ㅎㅎ 애매합니다 테스트도 안해봤구요 ㅠㅠ

답변을 작성하려면 로그인이 필요합니다.