코스모스팜 스레드

최신글 뷰 관리 문의

안녕하세요.

현재 홈페이지의 한 페이지 안에 '게시판 검색'버튼을 만들어서 게시판을 검색할 수 있게 하고

그 밑에 '최근 뜨는 게시판' 메뉴를 만들려고 합니다.

현재 최신 글 모아보기는 조회수 많은 글을 게시판마다 불러올수 있게 되어있는데

혹시 제가 만들려는 '최근 뜨는 게시판' 메뉴에서는

조회수 많은 글이 아니라 조회수 많은 게시판 이름이 나오게

수정할 수 있을까요?

무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)
무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)
  • 안녕하세요~^^

    KBoard 플러그인에서 총 게시글 조회수가 가장 많은 게시판을 순서대로 표시하시려면

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    add_shortcode('kboard_board_best_view', 'kboard_board_best_view');
    function kboard_board_best_view(){
    	global $wpdb;
    	
    	$html = '';
    	
    	$best_board_list = $wpdb->get_results("SELECT `board_id`, SUM(`view`) as `sum` FROM `wp_kboard_board_content` GROUP BY `board_id` ORDER BY `sum` DESC LIMIT 0, 5");
    	
    	ob_start();
    	?>
    	<?php foreach($best_board_list as $board):?>
    	<?php $best_board = new KBoard($board->board_id)?>
    	<div>
    		<?php if($best_board->meta->auto_page):?>
    			<a href="/?page_id=<?php echo $best_board->meta->auto_page?>"><?php echo $best_board->board_name?></a>
    		<?php else:?>
    			<?php echo $best_board->board_name?>
    		<?php endif?>
    	</div>
    	<?php endforeach?>
    	<?php
    	$html = ob_get_clean();
    	return $html;
    }

    위의 코드에서 LIMIT 0, 5 부분을 LIMIT 0, 10 으로 수정하시면

    기존 5개만 표시하던 목록을 10개의 목록을 표시합니다.

     

    위의 코드에서 게시판 링크는 KBoard 게시판을 자동설치로 설치해주셔야 정상적으로 동작합니다.

    워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 기본설정 페이지에서

    게시판 자동설치에 페이지를 선택해주시면 됩니다.

    고맙습니다.

  • 안녕하세요... 위 코드들 적용해서 https://xion.kr/?page_id=53 테스트하고 있는데 자동설치한 게시판만 랭킹에 올라온다고 하셨는데 동영상 게시판은 자동설치 해제했는데 어제 계속 올리고 조회했더니 랭킹에 포함되서요... 자동저장안한 게시판은 철저히 막거나 제가 지정한 카페만 랭킹에 포함되게 하는 방법이 있을까요?

  • 코드의 순서가 잘못된 듯합니다.

    올려주신 코드 중에서 아래의 코드를

    $start_date = date("Ymd000000", strtotime("-1 week", current_time('timestamp')));
    $end_date = date("Ymd235959", strtotime("-1 day", current_time('timestamp')));

    아래의 코드 위에 추가해보시겠어요?

    $best_board_list = $wpdb->get_results("SELECT `board_id`, SUM(`view`) as `sum`, `date` FROM `{$wpdb->prefix}kboard_board_content` WHERE `date` BETWEEN '{$start_date}' AND '{$end_date}' GROUP BY `board_id` HAVING `date` BETWEEN '{$start_date}' AND '{$end_date}' ORDER BY `sum` DESC LIMIT 0, 10");

    고맙습니다.

  • // 총 게시글 조회수가 가장 많은 게시판을 표시하기
    add_shortcode('kboard_board_best_view', 'kboard_board_best_view');
    function kboard_board_best_view(){
    	global $wpdb;
    	
    	$html = '';
    	
    	$best_board_list = $wpdb->get_results("SELECT `board_id`, SUM(`view`) as `sum`, `date` FROM `{$wpdb->prefix}kboard_board_content` WHERE `date` BETWEEN '{$start_date}' AND '{$end_date}' GROUP BY `board_id` HAVING `date` BETWEEN '{$start_date}' AND '{$end_date}' ORDER BY `sum` DESC LIMIT 0, 10");
    	
    	$start_date = date("Ymd000000", strtotime("-1 week", current_time('timestamp')));
        $end_date = date("Ymd235959", strtotime("-1 day", current_time('timestamp')));
    
    	ob_start();
    	?>
    	<?php foreach($best_board_list as $board):?>
    	<?php $best_board = new KBoard($board->board_id)?>
    	<div class="kboard-best-view">
    		<?php if($best_board->meta->auto_page):?>
    			<a href="/?page_id=<?php echo $best_board->meta->auto_page?>">
    				<span class="kboard-best-view-board-name"><?php echo $best_board->board_name?></span>
    				<span class="kboard-best-view-count">조회수 <?php echo $board->sum?></span>
    			</a>
    		<?php else:?>
    			<span class="kboard-best-view-board-name"><?php echo $best_board->board_name?></span>
    			<span class="kboard-best-view-count">조회수 <?php echo $board->sum?></span>
    		<?php endif?>
    	</div>
    	<?php endforeach?>
    	<?php
    	$html = ob_get_clean();
    	return $html;
    }

    감사합니다...

    마지막 알려주신 대로 functions.php에 적용했는데 게시판 조회수를 늘려도 http://xion.kr/?page_id=53 여기에 게시판 목록이 하나도 안 떠서요. 코드 중에 잘못된 부분있는지 한번 봐주시겠어요?

  • 네, 맞습니다.

    4주를 기준으로 하시려면 이전 댓글에 안내해드린 코드 중

    -1 week 부분을 -4 week로 적용해주시면 됩니다.

     

    strtotime 함수에 대한 자세한 내용은 아래의 링크를 참고해보시겠어요?

    http://php.net/manual/en/function.strtotime.php

    고맙습니다.

  • 감사합니다^^ 만약 4주 단위로 하려면 알려주신 $start_date = date("Ymd000000", strtotime("-1 week", current_time('timestamp'))); 코드에서 -1 week 를 -4 week 로 수정하면 될까요?

  • 안녕하세요.

    코드를 올리는 과정에서 착오가 있었습니다.

    수정하신 코드 위에 아래의 코드도 추가해보시겠어요?

    $start_date = date("Ymd000000", strtotime("-1 week", current_time('timestamp')));
    $end_date = date("Ymd235959", strtotime("-1 day", current_time('timestamp')));

    고맙습니다.

  • 감사합니다. 어제 코드 삽입하고 게시판 조회수 클릭해봤는데 오늘 조회수 누른 게시판 목록이 "최근 뜨는 게시판" 탭메뉴에 뜨지 않아서요... http://xion.kr/?page_id=53 혹시 위 코드 알려주신거에 start-date하고 end-date에 날짜 제가 입력해줘야 되나요?

  • 안녕하세요.

    SQL Select 절에 조건을 추가하면 가능할 듯합니다.

    추가하신 코드 중 아래의 코드를 찾아서

    $best_board_list = $wpdb->get_results("SELECT `board_id`, SUM(`view`) as `sum` FROM `wp_kboard_board_content` GROUP BY `board_id` ORDER BY `sum` DESC LIMIT 0, 5");

    아래의 코드로 교체해보시겠어요?

    $best_board_list = $wpdb->get_results("SELECT `board_id`, SUM(`view`) as `sum`, `date` FROM `{$wpdb->prefix}kboard_board_content` WHERE `date` BETWEEN '{$start_date}' AND '{$end_date}' GROUP BY `board_id` HAVING `date` BETWEEN '{$start_date}' AND '{$end_date}' ORDER BY `sum` DESC LIMIT 0, 5");

    고맙습니다.

  • 항상 감사드립니다. 위 알려주신 기능에 시간 개념도 추가할 수 있을까요?

    예를 들어서 지난 1주일간의 조회수가 반영되게요.

    2월 11일~17일까지의 조회수가 18일에 보이고, 2월 12일~18일까지가 19일에 보이는 식으로요.

  • 안녕하세요.

    게시판 제목 색상을 바꾸고 오른쪽에 조회수도 표시하시려면

    기존의 코드 대신 아래의 코드로 교체해보세요.

    add_shortcode('kboard_board_best_view', 'kboard_board_best_view');
    function kboard_board_best_view(){
    	global $wpdb;
    	
    	$html = '';
    	
    	$best_board_list = $wpdb->get_results("SELECT `board_id`, SUM(`view`) as `sum` FROM `wp_kboard_board_content` GROUP BY `board_id` ORDER BY `sum` DESC LIMIT 0, 5");
    	
    	ob_start();
    	?>
    	<?php foreach($best_board_list as $board):?>
    	<?php $best_board = new KBoard($board->board_id)?>
    	<div class="kboard-best-view">
    		<?php if($best_board->meta->auto_page):?>
    			<a href="/?page_id=<?php echo $best_board->meta->auto_page?>">
    				<span class="kboard-best-view-board-name"><?php echo $best_board->board_name?></span>
    				<span class="kboard-best-view-count">조회수 <?php echo $board->sum?></span>
    			</a>
    		<?php else:?>
    			<span class="kboard-best-view-board-name"><?php echo $best_board->board_name?></span>
    			<span class="kboard-best-view-count">조회수 <?php echo $board->sum?></span>
    		<?php endif?>
    	</div>
    	<?php endforeach?>
    	<?php
    	$html = ob_get_clean();
    	return $html;
    }

     

    워드프레스 관리자 -> 외모(테마 디자인) -> 사용자 정의하기 -> CSS 입력 필드에

    아래의 코드를 추가해보시겠어요?

    .kboard-best-view .kboard-best-view-board-name { color: black; }
    .kboard-best-view .kboard-best-view-count { color: black; }

    위의 코드에서 색상은 적절히 수정해주세요.

    고맙습니다.

  • 감사합니다.

    http://xion.kr/?page_id=53 에 잘 적용했습니다.

    그런데 게시판 목록 색깔이 안 보여서 아래와 같이 해봤는데 적용이 안되서요.

    틀린 부분 알려주시겠어요?

    #kboard_board_best_view .POST-CONTENT .hentry .entry-content a:visited { color: #07e2ed }

    그리고, 게시판 이름만 나오는데 오른쪽에 조회숫자도 나오게 할 수 있을까요?

  • 안녕하세요.

    게시판 목록이 표시되고 있는지요?

    게시판 id는 별도로 입력하지 않으셔도 됩니다.

     

    이전 댓글에 안내해드린 코드를 적용하시면

    KBoard 게시판에서 전체 게시글의 조회수를 더해서

    더한 값이 가장 큰 게시판을 순서대로 표시할 수 있습니다.

    고맙습니다.

  • 감사합니다~ 위 알려주신대로 kboard 게시판 목록 들어가서 게시판 자동설치에서 '페이지'들을 선택해주었는데 조회순대로 게시판 이름이 안 나타나서요.. 맨처음 알려주신 코드에서 조회순 자료 뽑아올 게시판 아이디들을 입력해주어야 하나요? ^^;;

  • 안녕하세요.

    이전 댓글에 안내해드린 코드는 최신글 모아보기 기능과는 다른 코드입니다.

    해당 페이지에서 최신글 모아보기 숏코드 대신

    아래의 숏코드를 추가해보시겠어요?

    [kboard_board_best_view]

    고맙습니다.

  • 안녕하세요~ http://xion.kr/?page_id=53 에 위 기능 구현하고 있는데, 최신글 모아보기 생성해서 게시판들을 지정해줬는데, 최신글 제목들이 나오고 있어서요. 현 페이지에 불러올려면 어떤 구문을 써줘야 할까요? 감사합니다...

  • 감사합니다~ 새해 복 많이 받으세요^^

  • 저희가 KBoard 게시판을 자동설치로 설치해야 정상적으로 동작한다고 말씀드린 것은

    자동설치한 게시판만 표시되는 뜻은 아닙니다.

    자동설치로 게시판을 설치하지 않으면

    어느 페이지에 게시판이 설치되어 있는지 알 수없기 때문에

    특정 게시판을 클릭했을 때 실제 해당 게시판이 설치된 페이지로 이동할 수 없습니다.

     

    특정 게시판을 제외하시려면

    추가하신 코드 중 아래의 코드를 찾아서

    $best_board_list = $wpdb->get_results("SELECT `board_id`, SUM(`view`) as `sum`, `date` FROM `{$wpdb->prefix}kboard_board_content` WHERE `date` BETWEEN '{$start_date}' AND '{$end_date}' GROUP BY `board_id` HAVING `date` BETWEEN '{$start_date}' AND '{$end_date}' ORDER BY `sum` DESC LIMIT 0, 10");

    아래의 코드로 교체해보세요.

    $best_board_list = $wpdb->get_results("SELECT `board_id`, SUM(`view`) as `sum`, `date` FROM `wp_kboard_board_content` WHERE `date` BETWEEN '20190220000000' AND '20190226235959' AND `board_id` NOT IN('1') GROUP BY `board_id` HAVING `date` BETWEEN '20190220000000' AND '20190226235959' ORDER BY `sum` DESC LIMIT 0, 10");

    위의 코드에서 `board_id` NOT IN('1') 부분은 게시판 id로 적용해보세요.

    여러 개의 게시판을 제외하시려면 `board_id` NOT IN('1', '2', '3', '4') 이런 식으로 적용해보세요.

    고맙습니다.

이미지 사진은 imgur에 업로드한 뒤 링크 걸어주세요.
무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)