게시판의 ID들을 이용해서 통합 게시판을 만들고자 합니다. ( 이 부분은 월간베스트 방법을 참조하면 될것 같긴 합니다)
기존에 각 게시판별로 카테고리를 등록해둔것도
통합 게시판에서는 게시판별 카테고리들이 전부다 상단에 뜨도록 하고 싶은데요, 도움 부탁드립니다.
안녕하세요~^^
KBoard 플러그인에서 특정 게시판에 다른 게시판의 카테고리1을 표시하시려면
워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 추가해보시겠어요?
add_action('kboard_skin_header', 'my_kboard_skin_header', 10, 1);
function my_kboard_skin_header($builder){
$board = $builder->board;
if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
$kboard_list = new KBoardList();
$kboard_list->init();
$category1_list = array();
foreach($kboard_list->resource as $kboard){
if($kboard->category1_list){
$category1_list[] = $kboard->category1_list;
}
}
$board->category1_list = implode(',', $category1_list);
}
}
위의 코드에서 $board->id == '1' 부분은 실제 통합 게시판 id로 적용해보시겠어요?
고맙습니다.
감사합니다, 카테고리 노출은 잘 적용이 됩니다. 추가 질문이 있습니다,
1. 카테고리 클릭시 url은 선택한 카테고리로 파라미터가 붙어서 이동하는게 보이는데요,
목록은 그대로 전체 게시글 전부가 노출됩니다. 쿼리옵션에 get으로 던져지는 category1 을 받아서 WHERE를 걸어줘야 할까요?
2. $kboard_list = new KBoardList(); 객체생성할때 id를 통해 특정 게시판만 선택하는법 문의드립니다.
(전체글 모아보기를 (`board_id` BETWEEN '1' AND '23') 이렇게 옵션을 주어서 가져오는데 카테고리도 저 게시판들로만 가져오고 싶습니다)
3. 모여진 게시글 목록을 클릭해보면 '본 게시글은 이동되었습니다' 라고 메세지창이 뜨고 다시 목록 페이지로 돌아오는데요,
해당 글의 내용페이지로 이동시키려면 어떡해야 될까요?
질문이 많네요, 항상 친절한 답변 감사드립니다.
1. 통합 게시판 사용 시 카테고리 기능도 정상적으로 동작하게 하시려면
kboard_list_where 필터에 카테고리1의 값을 적용해주셔야 합니다.
실제 추가하신 코드를 에디터의 "코드 스니펫 삽입" 기능으로 올려주시면
도움 드릴 방법을 찾아보겠습니다.
2. 게시판 id가 1~23인 게시판의 카테고리를 가져오시려는 지요?
이전 댓글에 안내해드린 코드 중
아래의 코드를 찾아서
if($kboard->category1_list){
아래의 코드로 교체해보시겠어요?
if($kboard->category1_list && $kboard->uid >= '1' && $kboard->uid <= '23'){
3. '이 게시글은 이동되었습니다.' 안내창이 표시된다면
테마 쪽 functions.php 파일에
아래의 코드도 추가해보시겠어요?
add_filter('kboard_allowed_board_id', 'my_kboard_allowed_board_id', 10, 2);
function my_kboard_allowed_board_id($allowed_board_id, $board){
if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
$allowed_board_id = array();
for($i=1; $i<=23; $i++){
$allowed_board_id[] = $i;
}
}
return $allowed_board_id;
}
위의 코드에서 $board->id == '1' 부분은 통합 게시판 id로 적용해보세요.
고맙습니다.
답변 감사합니다,
1번 사항 적용해둔 코드 올려드립니다.
add_filter('kboard_list_where', 'month_best_kboard_list_where', 10, 3);
function month_best_kboard_list_where($where, $board_id, $content_list){
if($board_id == '66'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
//$date = date('Ym01000000', current_time('timestamp')); // 이번달 시작 날짜 기준
$where = "(`board_id` BETWEEN '1' AND '23') AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
}
return $where;
}
통합 게시판에 카테고리도 적용하시려면
올려주신 코드를 아래의 코드로 교체해서 확인해보시겠어요?
add_filter('kboard_list_where', 'month_best_kboard_list_where', 10, 3);
function month_best_kboard_list_where($where, $board_id, $content_list){
if($board_id == '66'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
$category1 = kboard_category1();
if($category1){
$where = "(`board_id` BETWEEN '1' AND '23') AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval') AND `category1`='{$category1}'";
}
else{
$where = "(`board_id` BETWEEN '1' AND '23') AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
}
}
return $where;
}
추가로, KBoard 플러그인에서 게시글의 카테고리1은
데이터베이스(DB) kboard_board_content 테이블에 category1 컬럼으로 저장됩니다.
kboard_category1 함수를 사용하시면 현재 선택된 카테고리1을 가져올 수 있습니다.
고맙습니다.
잘 됩니다, 정말 고맙습니다.