[기능] 여러개의 게시판을 하나의 최신글로 불러오기 > 정보공유

본문 바로가기

정보공유

일반글
그누보드팁

[기능] 여러개의 게시판을 하나의 최신글로 불러오기

페이지 정보

게시물QR코드

본문

그누보드의 최신글 기능을 사용하다보면 인기순, 랜덤순등 여러가지 기능을 구현해야 할 때가 있습니다.

이번에 소개할 기능은 여러개의 게시판의 최신글을 하나의 최신글 스킨에 최신순으로 불러오는 기능을 보도록 하겠습니다.

 

사용방법은 www/lib/latest.lib.php 파일에 아래의 함수를 추가 시켜줍니다.

<?php

/* www/lib/latest.lib.php */

 

// $bo_tables 테이블들 사이 콤마(,) 단위로 구분해서 넣을 것, 콤마 사이에 공백 없이 (ex aaa,bbb,)

function latest_all($skin_dir='', $bo_tables, $rows=10, $subject_len=40, $cache_time=1, $options='')

{

 

    global $g5;

 

    if (!$skin_dir) $skin_dir = 'basic';

 

    if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {

        if (G5_IS_MOBILE) {

            $latest_skin_path = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];

            if(!is_dir($latest_skin_path))

                $latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];

            $latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);

        } else {

            $latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];

            $latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);

        }

        $skin_dir = $match[1];

    } else {

        if(G5_IS_MOBILE) {

            $latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;

            $latest_skin_url  = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;

        } else {

            $latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;

            $latest_skin_url  = G5_SKIN_URL.'/latest/'.$skin_dir;

        }

    }

 

        $list = array();

        $sql_common = " from {$g5['board_new_table']} a  where find_in_set(a.bo_table, '{$bo_tables}')";

        $sql_common .= " and a.wr_id = a.wr_parent ";

        $sql_order = " order by a.bn_id desc ";

        $sql = " select a.* {$sql_common} {$sql_order} limit 0, {$rows}";

 

        $result = sql_query($sql);

        

        for ($i=0; $row=sql_fetch_array($result); $i++) {

 

            $sql = " select * from {$g5['board_table']} where bo_table = '{$row['bo_table']}' ";

            $board = sql_fetch($sql);

 

            $tmp_write_table = $g5['write_prefix'] . $row['bo_table'];

            $row2 = sql_fetch(" select * from {$tmp_write_table} where wr_id = '{$row['wr_id']}' ");

 

            $list[$i] = $row2;

            $list[$i] = get_list($row2, $board, $latest_skin_url, $subject_len);

            $list[$i]['bo_subject'] = $row['bo_subject'];

            $list[$i]['bo_table'] = $row['bo_table'];

        }

 

    ob_start();

    include $latest_skin_path.'/latest.skin.php';

    $content = ob_get_contents();

    ob_end_clean();

 

    return $content;

}

?>

위의 소스코드를 www/lib/latest.lib.php 파일의 제일 하단에

php 문법이 닫히는 ?> 구문전에 복사해서 넣으시면 됩니다.

 

사용방법

<?php

/* 최신글을 노출시킬 페이지 */

 

echo latest_all("스킨명", "게시판명1,게시판명2,게시판명3,게시판명4", 출력갯수, 글자수); 

?>

 

사용방법 예시

<?php

/* 최신글을 노출시킬 페이지 */

 

echo latest_all("basic", "notice,qna,news,faq", 10, 20); 

?>

 

기존에 사용하던 최신글스킨에 이미지가 있었다면

해당 최신글 스킨​/latest.skin.php 에서 함수의 인자값은 변경해준다.

<?php 

/* 해당 최신글 스킨/latest.skin.php */

 

$thumb = get_list_thumbnail($list[$i]['bo_table'], $list[$i]['wr_id'], $thumb_width, $thumb_height);

?>

댓글목록

루벤님의 댓글

no_profile 루벤쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

해당 소스 너무 유용하게 사용하고있습니다.
여러게시판을 하나의 최근게시물로 뽑아오면서 랜덤출력으로 가능할까요?

그누위즈님의 댓글의 댓글

그누위즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

shuffle($list);
ob_start();
include $latest_skin_path.'/latest.skin.php';
$content = ob_get_contents();
ob_end_clean();

위와 같은 형식으로 shuffle() 함수를 사용하여 배열을 섞어버리면 됩니다.

주헌님의 댓글

no_profile 주헌쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

해당 소스 너무 좋네요
최신으로 되어있있지만 혹시
wr_hit 순
게시물 조회 많은 순으로 출력 가능할까요?
어디를 수정해야 될까요?

그누위즈님의 댓글의 댓글

그누위즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

안녕하세요. 그누위즈입니다.
해당 커스텀 부분은 제작의뢰 쪽에서 소정의 비용으로 개별 커스텀 가능합니다.
감사합니다.

주헌님의 댓글의 댓글

no_profile 주헌쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

비용이 얼마정도 들까요?

그누위즈님의 댓글의 댓글

그누위즈쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

카카오톡 smmysong 추가해서 연락주시면 자세한 안내 드리겠습니다.

  • Addr.부산광역시 동구 중앙대로 319, 9층 L4호(초량동, 부산YMCA빌딩) Email. gnuwiz@naver.com
  • BR. 625-68-00172 TRC. 2019-부산해운대-1186 TEL. 0507-1382-2790
All rights reserved.