안녕하세요~
항상 친절한 답변 감사드립니다.
다름아니라 https://imgur.com/a/4QDCu7n 처럼 관리자가 공지사항을 쓰면 게시판 맨 상단에 공지사항 글은 올라오는데
카테고리 분류시 '공지'를 만들어주고 공지글 작성하면 게시판 위 상단에도 보이고 '공지'카테고리로
분류도 되게 할수 있을까요?
안녕하세요~^^
최신 버전의 KBoard 플러그인을 사용 중이시라면 공지사항도 카테고리 별로 분류가 됩니다.
카테고리가 없을 경우엔 모든 공지사항이 표시되며
카테고리가 있을 경우엔 해당 카테고리로 등록된 공지사항이 표시됩니다.
'공지' 카테고리를 새로 만드신 후 공지사항 게시글 작성 시
카테고리1을 공지로 설정해보시겠어요?
카테고리1은
워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 기본설정 페이지에서
카테고리1 입력 필드에 콤마(,)로 구분해서 입력해보시겠어요?
고맙습니다.
안녕하세요~
알려주신대로 했더니 " https://xion.kr/?page_id=83&mod=list&pageid=1&category1=공지 "
처럼 글쓰기 권한만 부여한 아이디에게도 '공지' 카테고리를 선택할 수 있어서
이 작성자가 '공지'를 선택하면 공지 카테고리로 글이 분류되어버리는데
방법이 없을까요?
게시글 작성 시 특정 카테고리1을 관리자에게만 표시하시려면
워드프레스 관리자 -> 외모(테마 디자인) -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 추가해보시겠어요?
add_filter('kboard_get_template_field_html', 'kboard_ask_one_get_template_field_html', 10, 4);
function kboard_ask_one_get_template_field_html($html, $field, $content, $board){
if($field['meta_key'] == 'category1' && $board->id == '1'){ // 실제 게시판 id로 적용해주세요.
$meta_key = (isset($field['meta_key']) && $field['meta_key']) ? $field['meta_key'] : '';
$field_name = (isset($field['field_name']) && $field['field_name']) ? $field['field_name'] : $field['field_label'];;
$required = (isset($field['required']) && $field['required']) ? 'required' : '';
ob_start();
?>
<?php if(!$board->isTreeCategoryActive()):?>
<?php if($board->initCategory1()):?>
<div class="kboard-attr-row <?php echo esc_attr($field['class'])?> <?php echo esc_attr($required)?>">
<label class="attr-name" for="<?php echo esc_attr($meta_key)?>"><span class="field-name"><?php echo esc_html($field_name)?></span><?php if($required):?> <span class="attr-required-text">*</span><?php endif?></label>
<div class="attr-value">
<select id="<?php echo esc_attr($meta_key)?>" name="category1" class="<?php echo esc_attr($required)?>">
<option value=""><?php echo __('Category', 'kboard')?> <?php echo __('Select', 'kboard')?></option>
<?php while($board->hasNextCategory()):?>
<?php if(!$board->isAdmin() && $board->currentCategory() == '공지') continue?>
<option value="<?php echo $board->currentCategory()?>"<?php if($content->category1 == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
<?php endwhile?>
</select>
<?php if(isset($field['description']) && $field['description']):?><div class="description"><?php echo esc_html($field['description'])?></div><?php endif?>
</div>
</div>
<?php endif?>
<?php endif?>
<?php
$html = ob_get_clean();
}
return $html;
}
위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해주세요.
만약, "공지" 카테고리가 아닌 다른 카테고리를 관리자 외에 안 보이게 하시려면
공지 부분을 다른 카테고리로 적용해보시겠어요?
고맙습니다.
감사합니다! 잘 적용되었어요^^
추가로 필요한 카테고리가 있어서 위 코드를 그대로 복사하고 아래처럼 카테고리 이름은 '정보'로 정하고 아래쪽 class도 'info'로 수정했더니 홈페이지가 안 열리네요.
해당 게시판의 운영자인 관리자가 자기를 소개하는 글 1개를 '정보'카테고리에 넣으려고 하는거거든요. 아래 코드 수정할수 있을까요?
아울러서 만약 '정보'카테고리에는 관리자가 자기를 소개한 글이 보여지지만, 전체 게시판 목록에서는 그 글만 안보이게 설정하는것도 가능할까요? 어려운 질문드려 죄송합니다.^^;
add_filter('kboard_get_template_field_html', 'kboard_ask_one_get_template_field_html', 10, 4);
function kboard_ask_one_get_template_field_html($html, $field, $content, $board){
if($field['meta_key'] == 'category1' && $board->id == '1'){ // 실제 게시판 id로 적용해주세요.
$meta_key = (isset($field['meta_key']) && $field['meta_key']) ? $field['meta_key'] : '';
$field_name = (isset($field['field_name']) && $field['field_name']) ? $field['field_name'] : $field['field_label'];;
$required = (isset($field['required']) && $field['required']) ? 'required' : '';
ob_start();
?>
<?php if(!$board->isTreeCategoryActive()):?>
<?php if($board->initCategory1()):?>
<div class="kboard-attr-row <?php echo esc_attr($field['class'])?> <?php echo esc_attr($required)?>">
<label class="attr-name" for="<?php echo esc_attr($meta_key)?>"><span class="field-name"><?php echo esc_html($field_name)?></span><?php if($required):?> <span class="attr-required-text">*</span><?php endif?></label>
<div class="attr-value">
<select id="<?php echo esc_attr($meta_key)?>" name="category1" class="<?php echo esc_attr($required)?>">
<option value=""><?php echo __('Category', 'kboard')?> <?php echo __('Select', 'kboard')?></option>
<?php while($board->hasNextCategory()):?>
<?php if(!$board->isAdmin() && $board->currentCategory() == '정보') continue?>
<option value="<?php echo $board->currentCategory()?>"<?php if($content->category1 == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
<?php endwhile?>
</select>
<?php if(isset($field['info']) && $field['info']):?><div class="info"><?php echo esc_html($field['info'])?></div><?php endif?>
</div>
</div>
<?php endif?>
<?php endif?>
<?php
$html = ob_get_clean();
}
return $html;
}
아, 그리고, 제가 실제 적용하는 게시판 id '1','2','3' 이렇게 여러개 적용했는데 또 에러가 난거 같아서요.. 여러개 적용할수도 있을까요?
안녕하세요.
여러 개의 게시판에 적용하시려면
$board_id == '1' 코드를 in_array($board_id, array('1', '2', '3')) 이런 식으로 적용해보시겠어요?
설명 쪽 클래스명만 바꾸시려면
아래의 코드처럼 적용해주세요.
<?php if(isset($field['description']) && $field['description']):?><div class="info"><?php echo esc_html($field['description'])?></div><?php endif?>
kboard_list_where 필터를 사용하시면
게시글 목록을 가져오는 DB쿼리문의 WHERE절을 편집하실 수 있습니다.
말씀하신 것처럼 하시려면 프로그래밍에 대한 지식이 어느 정도 있어야 할 듯합니다.
고맙습니다.
도움 감사드립니다^^
한가지 더 여쭤보면 만약 고객만족센터란 게시판을 생성해서 그 게시판만 카테고리 분류해서 글쓰기 하면 '전체'는 표시 안되고 예를 들어서 분류를 공지, 건의, Q&A 로 3가지로 분류하면 선택한 카테고리로만 글이 분류되서 보이게도 가능할까요?
KBoard 게시판 플러그인 카테고리에서 전체 부분을 안 보이게 하면 되는 것인지요?
처음 페이지가 로딩될 때는 어떠한 조건으로 목록이 표시되어야 하는지요?
질문이 이해가 잘 안 갑니다.
좀 더 자세한 상황을 설명해주시겠어요?
고맙습니다.
아 네. 고객만족센터 게시판에서
처럼 이 게시판만 '전체'표시 안되게 하고 싶어서요^^;
공지사항은 공지사항 카테고리안에서만 보이고, 건의사항은 건의사항 카테고리안에서만 보이게요.
카테고리 목록에서 전체를 안 보이게 하고
공지사항 클릭 시 공지사항 카테고리만 보이고
건의사항 클릭 시 건의사항 카테고리만 표시되게 하시려는 건지요?
만약, 공지사항 클릭 시 공지사항 카테고리만 보인다면
건의사항 카테고리를 클릭하시려면 고객만족센터 첫 페이지로 가서 선택을 해야 합니다.
카테고리 선택 시 다른 카테고리를 선택하려면 다시 고객만족센터 메뉴를 클릭해서 이동하는 게 맞는지요?
저희가 잘못 이해하고 있는 거라면 다시 설명해주시겠어요?
카테고리 목록에서 전체 부분을 안 보이게 하는 건 스킨마다 다를 수도 있습니다.
Default 스킨을 기준으로 안내해드리겠습니다.
FTP로 접속해서 /wp-content/plugins/kboard/skin/사용중인스킨/list-category-default.php 파일에
아래의 코드를 찾아서 모두 지워보시겠어요?
<li<?php if(!kboard_category1()):?> class="kboard-category-selected"<?php endif?>><a href="<?php echo $url->set('category1', '')->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->tostring()?>"><?php echo __('All', 'kboard')?></a></li>
모바일 화면의 셀렉트 박에서도 안 보이게 하시려면
아래의 코드도 지워보시겠어요?
<option value=""><?php echo __('All', 'kboard')?></option>
고맙습니다.
설명을 잘 못해서 죄송합니다.^^;;
https://imgur.com/a/oPPdikg 처럼 '전체'는 아예 안 보이고
기본 보이는게 공지사항으로 보이면 되는데 위 알려주신 코드로 하면 될까요?
말씀하신 것처럼 적용하시려면
카테고리 쪽 코드를 수정해주셔야 할 듯합니다.
저희도 좋은 방법이 있을지 고민해보겠습니다.
고맙습니다.