최신글 모아보기 id 체크에 대해 질문..

워드프레스 게시판 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;
    }

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요