최신글 카테고리별 출력 자문구하고자 합니다.

최신글 카테고리별 출력 자문구하고자 합니다.

QA

최신글 카테고리별 출력 자문구하고자 합니다.

본문


안녕하세요 회원님들 환절기 건강 조심하고 계시죠?^^

 

다름이 아니라 이번에 숙제가 하나 생겼습니다.

 

저희 과내에 홈페이지가 있는데 그누보드5로 구축을 했습니다.

 

그래서 최신글 추출로 그룹내 특정 게시판만 출력해서 사용중인데 실장님께서 그룹별로 출력하고

 

카테고리를 함께 최신글로 출력하고 싶으시다고 합니다.OTL

 

그래서 이리저리 뒤져보고 자료를 구했는데 그룹별로 불러오는건 어느정도 구축했는데 특정 게시판을 불러와서 그 게시판내의 카테고리를 다중 선택할 수 있도록하는건 자료가 없네요

 

여기 관련해서

 

카테고리를 불러오는 함수

<?php
if (!defined('_GNUBOARD_')) exit;

// 메뉴
function groupmenu($skin_dir='basic', $new_time)
{
    global $config, $group, $g5, $is_admin, $bo_table;
 $groupmenu = array();

    if(!$group['gr_id'] || G5_IS_MOBILE)
        return;
 
  $sql = " select * from {$g5['group_table']} where gr_device <> 'mobile' and gr_id = '{$group['gr_id']}' order by gr_order ";
    $result = sql_query($sql);
 for ($gi=0; $row=sql_fetch_array($result); $gi++) { // gi 는 group index
  $sql2 = " select * from {$g5['board_table']} where gr_id = '{$row['gr_id']}' and bo_device <> 'mobile' order by bo_order ";
  $result2 = sql_query($sql2);
  for ($bi=0; $row2=sql_fetch_array($result2); $bi++) { // bi 는 board index 
   $board_table = $g5['write_prefix'] . $row2['bo_table'];
   $latest_count =  sql_fetch(" select count(*) as cnt from {$board_table} where wr_datetime > '".date('Y-m-d H:i:s', time() - (3600 * $new_time))."'");
   
   $groupmenu[$bi]['bo_table'] = $row2['bo_table'];
   $groupmenu[$bi]['href'] = G5_BBS_URL.'/board.php?bo_table='.$row2['bo_table'];
   $groupmenu[$bi]['subject'] = $row2['bo_subject'];
   $groupmenu[$bi]['cnt'] = $latest_count['cnt'];
  }
 } 
 $groupmenu_skin_path = G5_SKIN_PATH.'/groupmenu/'.$skin_dir;
    $groupmenu_skin_url  = G5_SKIN_URL.'/groupmenu/'.$skin_dir;

    ob_start();   
    include_once ($groupmenu_skin_path.'/groupmenu.skin.php');
    $content = ob_get_contents();
    ob_end_clean();

    return $content;
}

에서

function latest_category($skin_dir='', $bo_table, $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;
        }
    }

 $cache_fwrite = false;
    if(G5_USE_CACHE) {
  // 분류별로 cache파일명 따로 지정 add
        $sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
        $board2 = sql_fetch($sql);
        $bo_cate = explode("|",$board2['bo_category_list']);
  for($i=0; $i<count($bo_cate); $i++) {
   if($bo_cate[$i]==$options) $cate_no=$i;
        }
      //$cache_file = G5_DATA_PATH."/cache/latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}.php";
        $cache_file = G5_DATA_PATH."/cache/latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}-cate{$cate_no}.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();

        $sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
        $board = sql_fetch($sql);
        $bo_subject = get_text($board['bo_subject']);

        $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
      //$sql = " select * from {$tmp_write_table} where wr_is_comment = 0 order by wr_num limit 0, {$rows} ";
        $sql = " select * from {$tmp_write_table} where wr_is_comment = 0 and ca_name = '{$options}' order by wr_num limit 0, {$rows} ";
        $result = sql_query($sql);
        for ($i=0; $row = sql_fetch_array($result); $i++) {
            $list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);
        }

  if($cache_fwrite) {
            $handle = fopen($cache_file, 'w');
            $cache_content = "<?php\nif (!defined('_GNUBOARD_')) exit;\n\$bo_subject='".$bo_subject."';\n\$list=".var_export($list, true)."?>";
            fwrite($handle, $cache_content);
            fclose($handle);
        }
    }

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

    return $content;
}
?>
이 함수와 결합이 필요할듯 한데 자문 부탁드립니다.

 

이 함수는 병원에서 일해요님과(저도 병원에서 일합니다.ㅠㅠ) 왕계란님의 글에서 조금씩 도움을 구했습니다.

b8edfd6e257a757fbfe3b66dcc34836c_1479276416_1532.jpg
 

이 질문에 댓글 쓰기 :

답변을 작성하시기 전에 로그인 해주세요.
전체 33
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT