안녕하세요
KBoard 관련하여 궁금한것이 있습니다.
[kboard id=1] / [kboard id=2] / [kboard id=3] 과 같이 각 게시판이 만들어져 있습니다.
DB의 kboard_board_content에서 board_id= 1 / board_id= 2 /board_id= 3 와 같이 등록한 글에 대해 각 게시판별로 확인도 완료 했구요...
각각의 종류별로 게시판이 생성되어 있고 각 게시판들은 shoprt code로 적용하여 사용하고 있습니다.
리스트 페이지의 리스는 add_filter로 구현되었지만,
상단의 total 및 category부분은 별도의 add_filter로 구현되어 노출되어 지는것으로 보여집니다.
상단의 total 및 category에 대해 적용은 어떻게 해야 하나요???
total 또는 카테고리 종류는 필터와 전혀 상관이 없습니다.
[kboard id=1] 이 숏코드 대로 출력이 됩니다.
id 값을 1로 넣어주셨드면 게시판 아이디가 1인 게시판의 total 또는 카테고리 값이 출력됩니다.
즉 숏코드로 입력한 게시판 ID는 절대 바뀌지 않습니다.
리스트는 쿼리 수정으로 다른 게시판 게시글 까지 가져오지만
카테고리나 게시판 설정은 [kboard id=1] 이걸로 판단 됩니다.
바뀌지 않기 때문에 직접 쿼리를 작성하거나 클래스를 사용해서 데이터를 가져와야 한다는 답변입니다^^
게시판 2개를 노출하고 싶은 것이 아닙니다.
board_id가 3이면 3과 10에 해당하는 board_id에 대해 하나의 게시판에서 노출하려고 합니다.
게시판 리스트에서 리스트 노출은 제가 원하는 값으로 잘 나오고 있습니다.
하지만, <?php echo number_format($board->getListTotal())?> total이나 카테고리 종류는 board_id =3에 해당하는 값만 나오고 있어서요....
상단 : total / category => board_id =3에 해당하는 데이타 total이나 categoray만 나옴
하단(리스트) : board_id=3 / board_id=10에 해당하는 데이터 모두 나옴.
kboard_list_where 필터를 사용해서 2개의 게시판에 등록된 글을 1개의 게시판에 출력하고 계십니다.
kboard_list_where 필터를 사용해서 2개 게시판을 한꺼번에 보여주는건 쿼리가 1번 요청된거라 아무리 해도 2개의 리스트를 만들 수 없습니다.
쿼리 한번에 게시판 리스트를 두 개를 만든다는건 불가능 합니다.
위 아래로 각각 리스트를 출력하고 싶으신거죠? (결과적으로 게시판 리스트가 2개가 표시되는 모습이겠죠.)
그렇다면 쿼리도 2번 요청을 해야합니다.
한 페이지에 각각 게시판의 최신글 숏코드를 삽입하면 2개의 리스트를 만들 수 있습니다.
또는 게시판 숏코드를 삽입해도 2개의 게시판을 만들 수 있죠.
그렇게 한 다음 스킨의 레이아웃을 수정하는 방식으로 진행하셔야 할 듯합니다.
아니면 프로그램을 아주 많이 수정하셔야 할 듯하군요.
add_filter('kboard_list_where', 'my_kboard_list_where', 10, 2);
function my_kboard_list_where($where, $board_id){
if(!is_super_admin() && $board_id=='10'){ // 원하시는 게시판 ID 값으로 바꿔주세요.
$user_ID = get_current_user_id();
return "board_id='3' OR board_id='10' ";
}
return $where;
}
추가하여 사용한 필터 입니다.
선택한 board_id가 10이면 wp_kboard_board_content의 board_id를 3 or 10의 모든 게시글을 가져오도록 수정했습니다.
list.php를 보면
<!-- 게시판 정보 시작 --><!-- 게시판 정보 끝 -->
<!-- 카테고리 시작 --><!-- 카테고리 끝 -->
<!-- 리스트 시작 --><!-- 리스트 끝 -->
으로 구분 되어 있는데.... 위에서 적용한 add_filter 부분은 <!-- 리스트 시작 --><!-- 리스트 끝 -->에 해당하는 쿼리문만
변경되어 데이터를 노출하고
<!-- 게시판 정보 시작 --><!-- 게시판 정보 끝 --><!-- 카테고리 시작 --><!-- 카테고리 끝 -->의 정보는 board_id=='10'이라고 function에서 입력받은 board_id의 값만 노출 됩니다.
예)board_id= 10 의 count는 3개 / board_id=3의 count는 5개라고 하면
<!-- 게시판 정보 시작 -->전체 3<!-- 게시판 정보 끝 -->
<!-- 카테고리 시작 -->board_id 3에 대한 카테고리 정보만 노출<!-- 카테고리 끝 -->
<!-- 리스트 시작 -->board_id 3 / board_id 10에대한 리스트 노출<!-- 리스트 끝 -->
상위 2개의 데이터는 변경되지 않습니다.
해당부분을 수정하려면 어떻게 해야 하나요?
일부 게시판에서만 add_filter를 적용하여 2개의 게시판에 대한 리스트를 보여 주고 싶습니다.
<!-- 게시판 정보 시작 -->
<div class="kboard-list-header">
<?php if(!$board->isPrivate()):?>
<div class="kboard-total-count">
<?php echo __('Total', 'kboard')?> <?php echo number_format($board->getListTotal())?>
</div>
<?php endif?>
<div class="kboard-sort">
<form id="kboard-sort-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
<?php echo $url->set('pageid', '1')->set('category1', '')->set('category2', '')->set('category3', '')->set('target', '')->set('keyword', '')->set('mod', 'list')->set('kboard_list_sort_remember', $board->id)->toInput()?>
<select name="kboard_list_sort" onchange="jQuery('#kboard-sort-form-<?php echo $board->id?>').submit();">
<option value="newest"<?php if($list->getSorting() == 'newest'):?> selected<?php endif?>><?php echo __('Newest', 'kboard')?></option>
<option value="best"<?php if($list->getSorting() == 'best'):?> selected<?php endif?>><?php echo __('Best', 'kboard')?></option>
<option value="viewed"<?php if($list->getSorting() == 'viewed'):?> selected<?php endif?>><?php echo __('Viewed', 'kboard')?></option>
<option value="updated"<?php if($list->getSorting() == 'updated'):?> selected<?php endif?>><?php echo __('Updated', 'kboard')?></option>
</select>
</form>
</div>
</div>
<!-- 게시판 정보 끝 -->
<?php if($board->use_category == 'yes'):?>
<!-- 카테고리 시작 -->
<div class="kboard-category category-mobile">
<form id="kboard-category-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
<?php echo $url->set('pageid', '1')->set('category1', '')->set('category2', '')->set('category3', '')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>
<?php if($board->initCategory1()):?>
<select name="category1" onchange="jQuery('#kboard-category-form-<?php echo $board->id?>').submit();">
<option value=""><?php echo __('All', 'kboard')?></option>
<?php while($board->hasNextCategory()):?>
<option value="<?php echo $board->currentCategory()?>"<?php if(kboard_category1() == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
<?php endwhile?>
</select>
<?php endif?>
<?php if($board->initCategory2()):?>
<select name="category2" onchange="jQuery('#kboard-category-form-<?php echo $board->id?>').submit();">
<option value=""><?php echo __('All', 'kboard')?></option>
<?php while($board->hasNextCategory()):?>
<option value="<?php echo $board->currentCategory()?>"<?php if(kboard_category2() == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
<?php endwhile?>
</select>
<?php endif?>
<?php if($board->initCategory3()):?>
<select name="category3" onchange="jQuery('#kboard-category-form-<?php echo $board->id?>').submit();">
<option value=""><?php echo __('All', 'kboard')?></option>
<?php while($board->hasNextCategory()):?>
<option value="<?php echo $board->currentCategory()?>"<?php if(kboard_category3() == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
<?php endwhile?>
</select>
<?php endif?>
</form>
</div>
<div class="kboard-category category-pc">
<?php if($board->initCategory1()):?>
<ul class="kboard-category-list">
<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>
<?php while($board->hasNextCategory()):?>
<li<?php if(kboard_category1() == $board->currentCategory()):?> class="kboard-category-selected"<?php endif?>>
<a href="<?php echo $url->set('category1', $board->currentCategory())->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toString()?>"><?php echo $board->currentCategory()?></a>
</li>
<?php endwhile?>
</ul>
<?php endif?>
<?php if($board->initCategory2()):?>
<ul class="kboard-category-list">
<li<?php if(!kboard_category2()):?> class="kboard-category-selected"<?php endif?>><a href="<?php echo $url->set('category2', '')->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->tostring()?>"><?php echo __('All', 'kboard')?></a></li>
<?php while($board->hasNextCategory()):?>
<li<?php if(kboard_category2() == $board->currentCategory()):?> class="kboard-category-selected"<?php endif?>>
<a href="<?php echo $url->set('category2', $board->currentCategory())->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toString()?>"><?php echo $board->currentCategory()?></a>
</li>
<?php endwhile?>
</ul>
<?php endif?>
<?php if($board->initCategory3()):?>
<ul class="kboard-category-list">
<li<?php if(!kboard_category3()):?> class="kboard-category-selected"<?php endif?>><a href="<?php echo $url->set('category3', '')->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->tostring()?>"><?php echo __('All', 'kboard')?></a></li>
<?php while($board->hasNextCategory()):?>
<li<?php if(kboard_category3() == $board->currentCategory()):?> class="kboard-category-selected"<?php endif?>>
<a href="<?php echo $url->set('category3', $board->currentCategory())->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toString()?>"><?php echo $board->currentCategory()?></a>
</li>
<?php endwhile?>
</ul>
<?php endif?>
</div>
<!-- 카테고리 끝 -->
<?php endif?>
어떤 필터를 말씀하시나요?
스킨 파일 내에서 $board 변수를 사용할 수 있습니다.
스킨의 list.php 파일 또는 document.php 파일 등에 <?php echo number_format($board->getListTotal())?> 이 코드를 넣으면 게시판 리스트에 보여지는 전체 게시글 수를 출력합니다.
<?php echo $board->id?> 이렇게 하시면 게시판 ID를 출력합니다.
어떻게 하고싶으신지 좀 더 구체적으로 알려주시겠어요?
만드신 코드가 있다면 알려주세요.
페이지 주소도 알려주시면 좋구요^^