테스트 사이트 - 개발 중인 베타 버전입니다

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

welcome 4년 전 조회 2,450

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

 

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

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

 

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

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

 

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

 

</p>

<p><?php

if (!defined('_GNUBOARD_')) exit;</p>

<p>function popular_bbs_compare($a, $b)

{

    return $b['wr_hit'] - $a['wr_hit'];

}</p>

<p>function popular_bbs($skin_dir = '', $gr_id, $rows = 10, $subject_len = 40, $days = 7, $cache_time = 5)

{

    global $g5;</p>

<p>    if (!$skin_dir) $skin_dir = 'basic';</p>

<p>    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;

        }

    }</p>

<p>    $cache_fwrite = false;

    if(G5_USE_CACHE) {

        $cache_file = G5_DATA_PATH."/cache/popular_bbs-{$gr_id}-{$skin_dir}-{$rows}-{$subject_len}.php";</p>

<p>        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;

                }

            }</p>

<p>            if(!$cache_fwrite)

                include($cache_file);

        }

    }</p>

<p>    if (!G5_USE_CACHE || $cache_fwrite) {

        $list = array();</p>

<p>        $nowYmd = date(Ymd, G5_SERVER_TIME);

        $startYmd = date('Ymd', strtotime('-'.$days." day", G5_SERVER_TIME));</p>

<p>        $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'];</p>

<p>            $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);

            }

        }</p>

<p>        usort($list, 'popular_bbs_compare');

        $list = array_slice($list, 0, $rows);</p>

<p>        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);

        }

    }</p>

<p>    ob_start();

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

    $content = ob_get_contents();

    ob_end_clean();</p>

<p>    return $content;

}</p>

<p>

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

답변 1개

채택된 답변
+20 포인트
4년 전

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

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

 

</p>

<p>        <span class="token variable">$sql</span> <span class="token operator">=</span> <span class="token double-quoted-string string">" select bo_table, bo_subject from <span class="token interpolation"><span class="token punctuation">{</span><span class="token variable">$g5</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'board_table'</span><span class="token punctuation">]</span><span class="token punctuation">}</span></span> where gr_id = '<span class="token interpolation"><span class="token punctuation">{</span><span class="token variable">$gr_id</span><span class="token punctuation">}</span></span>' "</span><span class="token punctuation">;</span>

        <span class="token variable">$board_list</span> <span class="token operator">=</span> <span class="token function">sql_query</span><span class="token punctuation">(</span><span class="token variable">$sql</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        <span class="token keyword keyword-for">for</span> <span class="token punctuation">(</span><span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$board</span> <span class="token operator">=</span> <span class="token function">sql_fetch_array</span><span class="token punctuation">(</span><span class="token variable">$board_list</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>

            <span class="token variable">$tmp_write_table</span> <span class="token operator">=</span> <span class="token variable">$g5</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'write_prefix'</span><span class="token punctuation">]</span> <span class="token punctuation">.</span> <span class="token variable">$board</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'bo_table'</span><span class="token punctuation">]</span><span class="token punctuation">;</span></p>

<p><span class="token punctuation">-------------- 위 코드 삭제후 변경</span></p>

<p><span class="token punctuation">       $bo_table= explode(',', $gr_id)</span></p>

<p><span class="token punctuation">       foreach(</span>$bo_table as $table){</p>

<p>            <span class="token variable">$tmp_write_table</span> <span class="token operator">=</span> <span class="token variable">$g5</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'write_prefix'</span><span class="token punctuation">]</span> <span class="token punctuation">.</span> <span class="token variable">$</span><span class="token single-quoted-string string">table</span><span class="token punctuation">;</span></p>

<p><span class="token punctuation">---------------- 호출</span></p>

<p><span class="token function">popular_bbs</span><span class="token punctuation">(스킨</span><span class="token punctuation">,</span> 'free,qna,guestbook, news' ~~~~);</p>

<p> </p>

<p>

     

 

 

 

로그인 후 평가할 수 있습니다

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

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

로그인