혹시 그룹 베스트글을 게시판명으로 지정해서 쓸수있을까요?

혹시 그룹 베스트글을 게시판명으로 지정해서 쓸수있을까요?

QA

혹시 그룹 베스트글을 게시판명으로 지정해서 쓸수있을까요?

답변 1

본문

혹시 그룹이 아니라 게시판을 지정해서도 가능할까요?
예) free, qna, guestbook, news... 이런식으로 여러 게시판 id값을 넣어서 바꾸고싶습니다.

 

소스코드는 아래와 같습니다.

https://sir.kr/g5_tip/5803#c_15171

 

그리고 특정 게시판만 불어오는 최신글 소스도 찾았는데

https://sir.kr/g5_tip/4103 와 같습니다.

 

어떻게 합치면 될것 같은데 잘안되서 문의드립니다.

 


<?php
if (!defined('_GNUBOARD_')) exit;
function popular_bbs_compare($a, $b)
{
    return $b['wr_hit'] - $a['wr_hit'];
}
function popular_bbs($skin_dir = '', $gr_id, $rows = 10, $subject_len = 40, $days = 7, $cache_time = 5)
{
    global $g5;
    if (!$skin_dir) $skin_dir = 'basic';
    if (preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
        if (G5_IS_MOBILE) {
            $popular_bbs_skin_path = G5_THEME_MOBILE_PATH . '/' . G5_SKIN_DIR . '/popular_bbs/' . $match[1];
            if (!is_dir($popular_bbs_skin_path))
                $popular_bbs_skin_path = G5_THEME_PATH . '/' . G5_SKIN_DIR . '/popular_bbs/' . $match[1];
            $popular_bbs_skin_url = str_replace(G5_PATH, G5_URL, $popular_bbs_skin_path);
        } else {
            $popular_bbs_skin_path = G5_THEME_PATH . '/' . G5_SKIN_DIR . '/popular_bbs/' . $match[1];
            $popular_bbs_skin_url = str_replace(G5_PATH, G5_URL, $popular_bbs_skin_path);
        }
        $skin_dir = $match[1];
    } else {
        if (G5_IS_MOBILE) {
            $popular_bbs_skin_path = G5_MOBILE_PATH . '/' . G5_SKIN_DIR . '/popular_bbs/' . $skin_dir;
            $popular_bbs_skin_url = G5_MOBILE_URL . '/' . G5_SKIN_DIR . '/popular_bbs/' . $skin_dir;
        } else {
            $popular_bbs_skin_path = G5_SKIN_PATH . '/popular_bbs/' . $skin_dir;
            $popular_bbs_skin_url = G5_SKIN_URL . '/popular_bbs/' . $skin_dir;
        }
    }
    $cache_fwrite = false;
    if(G5_USE_CACHE) {
        $cache_file = G5_DATA_PATH."/cache/popular_bbs-{$gr_id}-{$skin_dir}-{$rows}-{$subject_len}.php";
        if(!file_exists($cache_file)) {
            $cache_fwrite = true;
        } else {
            if($cache_time > 0) {
                $filetime = filemtime($cache_file);
                if($filetime && $filetime < (G5_SERVER_TIME - 3600 * $cache_time)) {
                    @unlink($cache_file);
                    $cache_fwrite = true;
                }
            }
            if(!$cache_fwrite)
                include($cache_file);
        }
    }
    if (!G5_USE_CACHE || $cache_fwrite) {
        $list = array();
        $nowYmd = date(Ymd, G5_SERVER_TIME);
        $startYmd = date('Ymd', strtotime('-'.$days." day", G5_SERVER_TIME));
        $sql = " select bo_table, bo_subject from {$g5['board_table']} where gr_id = '{$gr_id}' ";
        $board_list = sql_query($sql);
        for ($i = 0; $board = sql_fetch_array($board_list); $i++) {
            $tmp_write_table = $g5['write_prefix'] . $board['bo_table'];
            $sql = " select * from {$tmp_write_table} WHERE date_format(wr_datetime, '%Y%m%d') between '{$startYmd}' and '{$nowYmd}' order by wr_hit desc limit 0, {$rows}";
            $result = sql_query($sql);
            for ($i = 0; $row = sql_fetch_array($result); $i++) {
                $tmp_list = get_list($row, $board, $popular_bbs_skin_url, $subject_len);
                $tmp_list['bo_table'] = $board['bo_table'];
                $tmp_list['bo_subject'] = $board['bo_subject'];
                array_push($list, $tmp_list);
            }
        }
        usort($list, 'popular_bbs_compare');
        $list = array_slice($list, 0, $rows);
        if($cache_fwrite) {
            $handle = fopen($cache_file, 'w');
            $cache_content = "<?php\nif (!defined('_GNUBOARD_')) exit;\n\$list=".var_export($list, true)."?>";
            fwrite($handle, $cache_content);
            fclose($handle);
        }
    }
    ob_start();
    include $popular_bbs_skin_path . '/latest.skin.php';
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}

이 질문에 댓글 쓰기 :

답변 1

가장 손쉬운 방법은 해당하는 게시판만 그룹을 별도로 하나더 만들면 됩니다

그룹을 만들지 않고하려면 다음처럼

 


        $sql = " select bo_table, bo_subject from {$g5['board_table']} where gr_id = '{$gr_id}' ";
        $board_list = sql_query($sql);
        for ($i = 0; $board = sql_fetch_array($board_list); $i++) {
            $tmp_write_table = $g5['write_prefix'] . $board['bo_table'];
-------------- 위 코드 삭제후 변경
       $bo_table= explode(',', $gr_id)
       foreach($bo_table as $table){
            $tmp_write_table = $g5['write_prefix'] . $table;
---------------- 호출
popular_bbs(스킨, 'free,qna,guestbook, news' ~~~~);
 

     

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,103
© SIRSOFT
현재 페이지 제일 처음으로