워드프레스 게시판 KBoard(케이보드) 사용중입니다.
제가 일반 게시판은
<?php if($board->id == '8'):?>
<p>게시판 1 출력 </p>
<?php elseif($board->id == '7'):?>
<p>게시판 2 출력 </p>
<?php endif?>
이런식으로 id에 따라 한 페이지에 다른 글씨를 출력할 수 있는데..
최신글모아보기 id는 어떻게 해야 할 수 있죠?
<?php if($board->id == '8'):?>
<p>게시판 1 출력 </p>
<?php elseif($board->id == '7'):?>
<p>게시판 2 출력 </p>
<?php endif?>
굵게 표시한 부분을 어떻게 바꾸어야 할지..
최신글 id는 [kboard_latestview id=6] 이런거요..
+ 질문 한개만 더 드립니다. ㅎㅎ
제가 전체게시판을 만들려고 블로그 참고해서
add_filter('kboard_list_where', 'week_best_kboard_list_where', 10, 3);
function week_best_kboard_list_where($where, $board_id, $content_list){
if($board_id == '118'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
$where = "`date`>='{$date}' AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
}
return $where;
}
으로 만들었는데요 이게 저번에 https://www.cosmosfarm.com/threads/document/21414 에서 알려주신
코드가 작동이 안되요 어떻게 해결하나요??..
+ 위젯 업데이트 후 '인기글', '추천글'의 주기를 3일로 바꾸려면 어떻게 해야되죠?
항상 고생많으시고 감사합니다.
안녕하세요~^^
최신글 모아보기에서 id값을 체크하시려면 (게시판의 id값이 아닌 최신글 모아보기의 id값)
우선 파일을 수정해주셔야 합니다.
가급적 최신 버전의 KBoard(케이보드) 플러그인으로 업데이트해서 사용해주세요.
아래 내용은 최신 버전에 포함하도록 하겠습니다.
1. /wp-content/plugins/kboard/index.php 파일을 편집해주세요.
아래 코드를 찾아주세요.
add_shortcode('kboard_latestview', 'kboard_latestview_shortcode');
function kboard_latestview_shortcode($args){
if(!isset($args['id']) || !$args['id']) return 'KBoard 알림 :: id=null, 아이디값은 필수입니다.';
$latestview = new KBLatestview($args['id']);
if($latestview->uid){
$board_builder = new KBoardBuilder($latestview->getLinkedBoard(), true);
$board_builder->setSkin($latestview->skin);
$board_builder->setRpp($latestview->rpp);
$board_builder->setSorting($latestview->sort);
$board_builder->category1 = '';
$board_builder->category2 = '';
$with_notice = true;
if(isset($args['with_notice']) && $args['with_notice'] == 'false'){
$with_notice = false;
}
$latest = $board_builder->createLatest($with_notice);
return $latest;
}
else{
return 'KBoard 알림 :: id='.$args['id'].', 생성되지 않은 최신글 뷰 입니다.';
}
}
아래 코드로 교체해주세요.
add_shortcode('kboard_latestview', 'kboard_latestview_shortcode');
function kboard_latestview_shortcode($args){
if(!isset($args['id']) || !$args['id']) return 'KBoard 알림 :: id=null, 아이디값은 필수입니다.';
$latestview = new KBLatestview($args['id']);
if($latestview->uid){
$board_builder = new KBoardBuilder($latestview->getLinkedBoard(), true);
$board_builder->setSkin($latestview->skin);
$board_builder->setRpp($latestview->rpp);
$board_builder->setSorting($latestview->sort);
$board_builder->category1 = '';
$board_builder->category2 = '';
$with_notice = true;
if(isset($args['with_notice']) && $args['with_notice'] == 'false'){
$with_notice = false;
}
$args['type'] = 'latestview';
$latest = $board_builder->createLatest($with_notice, $args);
return $latest;
}
else{
return 'KBoard 알림 :: id='.$args['id'].', 생성되지 않은 최신글 뷰 입니다.';
}
}
2. /wp-content/plugins/kboard/class/KBoardBuilder.class.php 파일을 편집해주세요.
아래 코드를 찾아주세요.
public function createLatest($with_notice=true){
ob_start();
$list = new KBContentList($this->board_id);
if(!is_array($this->board_id) && $this->board->isPrivate()){
if(is_user_logged_in()){
$list->memberUID(get_current_user_id());
}
else{
$list->stop = true;
}
}
$list->is_latest = true;
$list->category1($this->category1);
$list->category2($this->category2);
$list->setSorting($this->sort);
$list->rpp($this->rpp);
$list->setWithinDays($this->within_days);
$list->getList('', '', $with_notice);
$url = new KBUrl();
$url->setBoard($this->board);
$vars = array(
'board_url' => $this->url,
'list' => $list,
'url' => $url,
'skin' => $this->skin,
'skin_path' => $this->skin->url($this->skin_name),
'skin_dir' => $this->skin->dir($this->skin_name),
'board' => $this->board,
'boardBuilder' => $this,
);
echo $this->skin->load($this->skin_name, 'latest.php', $vars);
return ob_get_clean();
}
아래 코드로 교체해주세요.
public function createLatest($with_notice=true, $args=array()){
ob_start();
$list = new KBContentList($this->board_id);
if(!is_array($this->board_id) && $this->board->isPrivate()){
if(is_user_logged_in()){
$list->memberUID(get_current_user_id());
}
else{
$list->stop = true;
}
}
$list->is_latest = true;
$list->category1($this->category1);
$list->category2($this->category2);
$list->setSorting($this->sort);
$list->rpp($this->rpp);
$list->setWithinDays($this->within_days);
$list->getList('', '', $with_notice);
$url = new KBUrl();
$url->setBoard($this->board);
$vars = array(
'latest' => $args,
'board_url' => $this->url,
'list' => $list,
'url' => $url,
'skin' => $this->skin,
'skin_path' => $this->skin->url($this->skin_name),
'skin_dir' => $this->skin->dir($this->skin_name),
'board' => $this->board,
'boardBuilder' => $this,
);
echo $this->skin->load($this->skin_name, 'latest.php', $vars);
return ob_get_clean();
}
3. 그다음 스킨의 latest.php 파일에서 아래 코드를 추가해서 확인해보시겠어요?
<?php
if(isset($latest)){
echo $latest['type']; // latestview 또는 latest
echo $latest['id']; // 숏코드에 포함된 id값
}
?>
해당 값들을 if 문으로 체크해서 코드를 만들어보세요.
고맙습니다.
전체 게시판 관련해서는
날짜(date)를 체크할 필요가 없다면 쿼리에서 제거를 해보세요.
아래 코드 참고 해보시겠어요?
add_filter('kboard_list_where', 'week_best_kboard_list_where', 10, 3);
function week_best_kboard_list_where($where, $board_id, $content_list){
if($board_id == '118'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
$where = "`parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
}
return $where;
}
고맙습니다.