채택완료

그룹내 특정 분류 최근글을 메인화면에 최근게시물로 추출 방법 질문이요..

2018-02-23 (금) 12:54:36 3,108

그룹내의 모든 게시판에서 동일한 분류를 사용하고

(board(그룹명)에 속해있는 10개의 게시판 분류는 신상,구제,재고 모두 동일

현재 그룹에 속해 있는 최근게시물은 추출은 되고 있는데 

분류를 나눌 예정이라서

그룹내 신상 분류에 업로드되는 게시물의 최근글을 메인화면에 최근게시물로 추출이 가능할까요?

<?=latest_group("theme/gr_product”,”board”,10,20); //그룹 최근글 latest_group('스킨','그룹id','글수','제목 글자 수')?> =그룹내 게시물중 최근글 추출

<?=latest_group("theme/gr_product”,”board”,10,20); //그룹 최근글 latest_group('스킨','그룹id','분류','글수','제목 글자 수')?>-이렇게 응용은 안될까요?

현재 사용중인 latest.lib.php

<?php

if (!defined('_GNUBOARD_')) exit;

// 최신글 추출

// $cache_time 캐시 갱신시간

function latest($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_file = G5_DATA_PATH."/cache/latest-{$bo_table}-{$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();

        $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".$where." order by wr_num limit 0, {$rows} ";*/

        /*$sql = " select * from {$tmp_write_table} where ca_name='{$ca_name}' AND wr_is_comment = 0 order by wr_num limit 0, {$rows} ";*/

        $sql = " select * from {$tmp_write_table} where wr_is_comment = 0".$where." 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='".sql_escape_string($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;

}

function latest_group($skin_dir="", $gr_id, $rows=10, $subject_len=40, $contents_len=200, $options="", $category="", $orderby="") { 

     global $config; 

     global $g5; 

     list($bo_table, $category) = explode("|", $bo_table); 

     if($category) $where = " AND ca_name = '".$category."' ";

     $list = array(); 

     $limitrows = $rows; 

     $sql_groupname = " select gr_subject from ".$g5['group_table']." where gr_id='".$gr_id."' ";

     $rowgroup = sql_fetch_array(sql_query($sql_groupname));

     $gr_subject = $rowgroup['gr_subject']; 

     $sqlgroup = " select bo_table, bo_subject from ".$g5['board_table']." where gr_id='".$gr_id."' and bo_use_search=1 order by bo_order";

     $rsgroup = sql_query($sqlgroup); 

     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;

         }

     }

     for ($j=0, $k=0; $rowgroup = sql_fetch_array($rsgroup); $j++) { 

         $bo_table = $rowgroup['bo_table']; 

         // 테이블 이름구함 

         $sql = " select * from ".$g5['board_table']." where bo_table='".$bo_table."'"; 

         $board = sql_fetch($sql); 

         $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 실제이름 

         // 옵션에 따라 정렬 

         $sql = "select * from ".$tmp_write_table." where wr_is_comment = 0 "; 

         $sql .= (!$category) ? "" : " and ca_name = '".$category."' "; 

         $sql .= (!$orderby) ? "  order by wr_datetime desc " : "  order by ".$orderby." desc, wr_datetime desc "; 

         $sql .= " limit ".$limitrows.""; 

         $result = sql_query($sql); 

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

             if(!$orderby) {

                 $op_list[$k] = $row['wr_datetime']; 

             } else  { 

                 $op_list[$k] = is_string($row[$orderby]) ? sprintf("%-256s", $row[$orderby]) : sprintf("%016d", $row[$orderby]); 

                 $op_list[$k] .= $row['wr_datetime']; 

                 $op_list[$k] .= $row['wr_name']; 

             } 

             $list[$k] = get_list($row, $board, $latest_skin_path, $subject_len, $wr_name, $wr_10); 

             $list[$k]['bo_table'] = $board['bo_table']; 

             $list[$k]['bo_subject'] = $board['bo_subject']; 

             $list[$k]['wr_name'] = $board['wr_name']; 

             $list[$k]['bo_wr_subject'] = cut_str($board['bo_subject'] . $list[$k]['wr_subject'], $subject_len, $wr_name, $wr_10); 

         } 

     } 

     if($k>0) array_multisort($op_list, SORT_DESC, $list); 

     if($k>$rows) array_splice($list, $rows); 

     ob_start(); 

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

     $content = ob_get_contents(); 

     ob_end_clean(); 

     return $content; 

 } 

?>

답변 1개 / 댓글 2개

채택된 답변
+20 포인트

분류별 최신글 불러오기 참고글입니다.

* https://m.blog.naver.com/ellenyang512/220689201485

답변에 대한 댓글 2개

답변 감사드립니다. 그런데 한개의 게시판에 속해 있는것이 아니고 그룹에 속해 있는 10개의 게시판에 신상이란 동일분류에 업로드 되는 게시물에서의 추출이 혹시?
죄송합니다.

거기까지는 잘 모르겠습니다.

답변을 작성하려면 로그인이 필요합니다.