[G4] 전체게시판 RSS 생성하기 > 기술자료

본문 바로가기
사이트 내 전체검색

기술자료

그누보드 [G4] 전체게시판 RSS 생성하기

페이지 정보

댓글 0건 조회 861회 수정일 18-05-03 13:24

본문

네이버 웹마스터도구 에서 rss 등록을 할때 사용합니다.
아미나 rss 를 참고해서 만들었습니다.
전체 게시판을 대상으로 추출합니다.
유료강좌이며 비용은 99,000원 입니다.
그누보드4 가 설치된 폴더에 rss.php 로 저장합니다.
네이버 웹마스터도구에 등록할때 사용하면 편리합니다.

그누보드 설치위치가 http://test.com/gnuboard/  인경우에는
http://test.com/gnuboard4/rss.php  의 형식으로 사용하세요


1. utf-8 일때
<?php
// rss ver 1.1 by happyjung 2018-04-23
// please give feedbacks to happyjung.com

$g4_path = "./gnuboard4"; // common.php 의 상대 경로
include_once("$g4_path/common.php");

$sql = "select bo_table from ".$g4['board_table']." where bo_use_rss_view = '1' and bo_read_level = '1' and bo_table <> '' ";
$query=sql_query($sql);
for ($i=0; $row=sql_fetch_array($query); $i++) {
    $bo[$i] = $row['bo_table'];
}

if (!$i) {
    echo 'RSS 보기가 가능한 게시판이 없습니다.';
    exit;
}

// 아래에 사이트 설명문구를 넣으세요
$description = "";

if (!$description) {
    echo '사이트 설명문구를 넣으세요';
    exit;
}

// RSS 갯수
$rss_rows = $config['cf_page_rows'];

header('Content-type: text/xml');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');

echo '<?xml version="1.0" encoding="utf-8" ?>'."\n";

$title = $config['cf_title'];

$base_URL = ($_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
$base_URL .= ($_SERVER['SERVER_PORT'] != '80') ? $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT'] : $_SERVER['HTTP_HOST'];
?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>

<title><?php echo $title; ?></title>
<link><?php echo $base_URL; ?></link>
<description><?php echo $description; ?></description>
<language>ko</language>
    <?php
    $sql = "select bo_table from ".$g4['board_table']." where bo_read_level='1' and bo_use_search='1' order by bo_table asc";
    
    $tot = mysql_num_rows(sql_query($sql));
    if ($tot > 1) {
        
        $query = sql_query($sql);
        while($temp = sql_fetch_array($query)) {
            $bo_arr[] = $temp['bo_table'];
        }
        
        $i = 1;
        
        foreach($bo_arr as $bo) {
            
            // 게시글 추출
            $sql = "select wr_id,wr_subject,wr_content,wr_name from ".$g4['write_prefix'].$bo." where wr_is_comment='0' AND wr_option NOT LIKE '%secret%' order by wr_id DESC limit 0, $rss_rows ";
            $query=sql_query($sql);
            while($row = sql_fetch_array($query)) {
                // list of each article
                if (strstr($temp['wr_option'], 'html'))
                    $html = 1;
                else
                    $html = 0;
                    
                $temp = sql_fetch("select wr_last from ".$g4['write_prefix'].$bo." where wr_parent='".$row['wr_id']."' order by wr_id DESC limit 0, $rss_rows ", false);
                $lastmod = $temp['wr_last'];
                if(!$lastmod) {
                    $temp = sql_fetch("select * from ".$g4['write_prefix'].$bo." where wr_id='".$row['wr_id']."'");
                    $lastmod = $temp['wr_datetime'];
                }
                //$date = substr($date,0,10) . "T" . substr($date,11,8) . "+09:00";
                $date = date('r', strtotime($lastmod));
                
                $wr_subject = $row['wr_subject'];
                $wr_content = $row['wr_content'];
                $wr_name = $row['wr_name'];
                
                $wr_subject = strip_tags(preg_replace("/&(?!#?[a-z0-9]+;)/", "&amp;",$wr_subject));
                $wr_content = strip_tags(preg_replace("/&(?!#?[a-z0-9]+;)/", "&amp;",$wr_content));
                $wr_name = strip_tags(preg_replace("/&(?!#?[a-z0-9]+;)/", "&amp;",$wr_name));
                ?>

<item>
<title><?php echo $wr_subject; ?></title>
    <link><?php echo $base_URL . preg_replace("`\/[^/]*\.php$`i", "/", $_SERVER['PHP_SELF']); ?>bbs/board.php?bo_table=<?php echo $bo;?>&amp;wr_id=<?php echo $row['wr_id']; ?></link>
    <description><![CDATA[<?php echo $wr_content; ?>]]></description>
    <dc:creator><?php echo $wr_name; ?></dc:creator>
    <dc:date><?php echo $date ?></dc:date>
</item>
                <?php
            }
            $i++;
        }
    }
    
    // 쇼핑몰 사용할때
    /*if ($g4['g4_shop_default_table']) {
        $query = sql_query("select it_id, it_name, it_basic, it_time from ".$g4['g4_shop_item_table']." where it_use='1' order by it_time desc");
        while($row = sql_fetch_array($query)) {
            $html = 1;
            //$date = substr($date,0,10) . "T" . substr($date,11,8) . "+09:00";
            $date = date('r', strtotime($row['it_time']));
            ?>

  <item>
    <title><?php echo conv_content($row['it_name'], $html); ?></title>
    <link><?php echo g4_SHOP_URL ?>/item.php?it_id=<?php echo $row['it_id'];?></link>
    <description><![CDATA[<?php echo conv_content($row['it_basic'], $html) ?>]]></description>
    <dc:creator>Admin</dc:creator>
    <dc:date><?php echo $date ?></dc:date>
  </item>
            <?php
        }
    }*/
    ?>
</channel>
</rss>


2-1. euc-kr 일때
<?php
// rss ver 1.1 by happyjung 2018-04-23
// please give feedbacks to happyjung.com

$g4_path = "./gnuboard4"; // common.php 의 상대 경로
include_once("$g4_path/common.php");

// 아래에 사이트 설명문구를 넣으세요
$description = "";

if ($description=="") {
    echo '사이트 설명문구를 넣으세요';
    exit;
}

function convStr($str) {
    $dect_str = mb_detect_encoding($str, "UTF-8, EUC-KR");
    if ($dect_str != "EUC-KR") {
        $conv_result = iconv("UTF-8", "EUC-KR" ,$str);
    } else {
        $conv_result = iconv("EUC-KR", "UTF-8", $str);
    }
    return $conv_result;
}

$sql = "select bo_table from {$g4['board_table']} where bo_use_rss_view = '1' and bo_read_level = '1' and bo_table <> '' ";
$query=sql_query($sql);
for ($i=0; $row=sql_fetch_array($query); $i++) {
    $bo[$i] = $row['bo_table'];
}

if (!$i) {
    echo 'RSS 보기가 가능한 게시판이 없습니다.';
    exit;
}

// RSS 갯수
$rss_rows = $config['cf_page_rows'];

header('Content-type: text/xml');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');

echo '<?xml version="1.0" encoding="euc-kr" ?>'."\n";

$title = $config['cf_title'];
$title = convStr($title);

$base_URL = ($_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
$base_URL .= ($_SERVER['SERVER_PORT'] != '80') ? $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT'] : $_SERVER['HTTP_HOST'];
?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>

<title><?php echo $title; ?></title>
<link><?php echo $base_URL; ?></link>
<description><?php echo $description; ?></description>
<language>ko</language>
    <?php
    $sql = "select bo_table from {$g4['board_table']} where bo_read_level='1' and bo_use_search='1' order by bo_table asc";
    
    $tot = mysql_num_rows(sql_query($sql));
    if ($tot > 1) {
        
        $query = sql_query($sql);
        while($temp = sql_fetch_array($query)) {
            $bo_arr[] = $temp['bo_table'];
        }
        
        $i = 1;
        
        foreach($bo_arr as $bo) {
            
            // 게시글 추출
            $sql = "select wr_id,wr_subject,wr_content,wr_name from ".$g4['write_prefix'].$bo." where wr_is_comment='0' AND wr_option NOT LIKE '%secret%' order by wr_id DESC limit 0, $rss_rows ";
            $query=sql_query($sql);
            while($row = sql_fetch_array($query)) {
                // list of each article
                if (strstr($temp['wr_option'], 'html'))
                    $html = 1;
                else
                    $html = 0;
                    
                $temp = sql_fetch("select wr_last from ".$g4['write_prefix'].$bo." where wr_parent='{$row['wr_id']}' order by wr_id DESC limit 0, $rss_rows ", false);
                $lastmod = $temp['wr_last'];
                if(!$lastmod) {
                    $temp = sql_fetch("select * from ".$g4['write_prefix'].$bo." where wr_id='{$row['wr_id']}'");
                    $lastmod = $temp['wr_datetime'];
                }
                //$date = substr($date,0,10) . "T" . substr($date,11,8) . "+09:00";
                $date = date('r', strtotime($lastmod));
                
                $wr_subject = $row['wr_subject'];
                $wr_content = $row['wr_content'];
                $wr_name = $row['wr_name'];
                
                // euc-kr 을 utf-8로 인코딩
                $wr_subject = convStr($wr_subject);
                $wr_content = convStr($wr_content);
                $wr_name = convStr($wr_name);
                
                $wr_subject = strip_tags(preg_replace("/&(?!#?[a-z0-9]+;)/", "&amp;",$wr_subject));
                $wr_content = strip_tags(preg_replace("/&(?!#?[a-z0-9]+;)/", "&amp;",$wr_content));
                $wr_name = strip_tags(preg_replace("/&(?!#?[a-z0-9]+;)/", "&amp;",$wr_name));
                ?>

<item>
<title><?php echo $wr_subject; ?></title>
    <link><?php echo $base_URL . preg_replace("`\/[^/]*\.php$`i", "/", $_SERVER['PHP_SELF']); ?>bbs/board.php?bo_table=<?php echo $bo;?>&amp;wr_id=<?php echo $row['wr_id']; ?></link>
    <description><![CDATA[<?php echo $wr_content; ?>]]></description>
    <dc:creator><?php echo $wr_name; ?></dc:creator>
    <dc:date><?php echo $date ?></dc:date>
</item>
                <?php
            }
            $i++;
        }
    }
    
    // 쇼핑몰 사용할때
    /*
    if ($g4['g4_shop_default_table']) {
        $query = sql_query("select it_id, it_name, it_basic, it_time from ".$g4['g4_shop_item_table']." where it_use='1' order by it_time desc");
        while($row = sql_fetch_array($query)) {
            $html = 1;
            //$date = substr($date,0,10) . "T" . substr($date,11,8) . "+09:00";
            $date = date('r', strtotime($row['it_time']));
            $it_basic = $row['it_basic'];
                
            // euc-kr 을 utf-8로 인코딩
            $wr_subject = convStr($it_basic);
            ?>

  <item>
    <title><?php echo conv_content($row['it_name'], $html); ?></title>
    <link><?php echo g4_SHOP_URL ?>/item.php?it_id=<?php echo $row['it_id'];?></link>
    <description><![CDATA[<?php echo conv_content($it_basic, $html) ?>]]></description>
    <dc:creator>Admin</dc:creator>
    <dc:date><?php echo $date ?></dc:date>
  </item>
            <?php
        }
    }
    */
    ?>
</channel>
</rss>


2-2. 위 euc-kr 에러날때
<?php
// rss ver 1.1 by happyjung 2018-04-23
// please give feedbacks to happyjung.com

$g4_path = "./gnuboard4"; // common.php 의 상대 경로
include_once("$g4_path/common.php");

// 아래에 사이트 설명문구를 넣으세요
$description = "";

if ($description=="") {
    echo '사이트 설명문구를 넣으세요';
    exit;
}

function convStr($str) {
    $dect_str = mb_detect_encoding($str, "UTF-8, EUC-KR");
    if ($dect_str != "EUC-KR") {
        $conv_result = iconv("UTF-8", "EUC-KR" ,$str);
    } else {
        $conv_result = iconv("EUC-KR", "UTF-8", $str);
    }
    return $conv_result;
}

$sql = "select bo_table from {$g4['board_table']} where bo_use_rss_view = '1' and bo_read_level = '1' and bo_table <> '' ";
$query=sql_query($sql);
for ($i=0; $row=sql_fetch_array($query); $i++) {
    $bo[$i] = $row['bo_table'];
}

if (!$i) {
    echo 'RSS 보기가 가능한 게시판이 없습니다.';
    exit;
}

// RSS 갯수
$rss_rows = $config['cf_page_rows'];

header('Content-type: text/xml');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');

echo '<?xml version="1.0" encoding="euc-kr" ?>'."\n";

$title = $config['cf_title'];
//$title = convStr($title);

$base_URL = ($_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
$base_URL .= ($_SERVER['SERVER_PORT'] != '80') ? $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT'] : $_SERVER['HTTP_HOST'];
?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>

<title><?php echo $title; ?></title>
<link><?php echo $base_URL; ?></link>
<description><?php echo $description; ?></description>
<language>ko</language>
    <?php
    $sql = "select bo_table from {$g4['board_table']} where bo_read_level='1' and bo_use_search='1' order by bo_table asc";
    
    $tot = mysql_num_rows(sql_query($sql));
    if ($tot > 0) {
        
        $query = sql_query($sql);
        while($temp = sql_fetch_array($query)) {
            $bo_arr[] = $temp['bo_table'];
        }
        
        $i = 1;
        
        foreach($bo_arr as $bo) {
            
            // 게시글 추출
            $sql = "select wr_id,wr_subject,wr_content,wr_name from ".$g4['write_prefix'].$bo." where wr_is_comment='0' AND wr_option NOT LIKE '%secret%' order by wr_id DESC limit 0, $rss_rows ";
            $query=sql_query($sql);
            while($row = sql_fetch_array($query)) {
                // list of each article
                if (strstr($temp['wr_option'], 'html'))
                    $html = 1;
                else
                    $html = 0;
                    
                $temp = sql_fetch("select wr_last from ".$g4['write_prefix'].$bo." where wr_parent='{$row['wr_id']}' order by wr_id DESC limit 0, $rss_rows ", false);
                $lastmod = $temp['wr_last'];
                if(!$lastmod) {
                    $temp = sql_fetch("select * from ".$g4['write_prefix'].$bo." where wr_id='{$row['wr_id']}'");
                    $lastmod = $temp['wr_datetime'];
                }
                //$date = substr($date,0,10) . "T" . substr($date,11,8) . "+09:00";
                $date = date('r', strtotime($lastmod));
                
                $wr_subject = $row['wr_subject'];
                $wr_content = $row['wr_content'];
                $wr_name = $row['wr_name'];
                
                // euc-kr 을 utf-8로 인코딩 , ut-8 디비인경우엔 아래 주석
                //$wr_subject = convStr($wr_subject);
                //$wr_content = convStr($wr_content);
                //$wr_name = convStr($wr_name);
                
                $wr_subject = strip_tags(preg_replace("/&(?!#?[a-z0-9]+;)/", "&amp;",$wr_subject));
                $wr_content = strip_tags(preg_replace("/&(?!#?[a-z0-9]+;)/", "&amp;",$wr_content));
                $wr_name = strip_tags(preg_replace("/&(?!#?[a-z0-9]+;)/", "&amp;",$wr_name));
                ?>

<item>
<title><?php echo $wr_subject; ?></title>
    <link><?php echo $base_URL . preg_replace("`\/[^/]*\.php$`i", "/", $_SERVER['PHP_SELF']); ?>bbs/board.php?bo_table=<?php echo $bo;?>&amp;wr_id=<?php echo $row['wr_id']; ?></link>
    <description><![CDATA[<?php echo $wr_content; ?>]]></description>
    <dc:creator><?php echo $wr_name; ?></dc:creator>
    <dc:date><?php echo $date ?></dc:date>
</item>
                <?php
            }
            $i++;
        }
    }
    
    // 쇼핑몰 사용할때
    /*
    if ($g4['g4_shop_default_table']) {
        $query = sql_query("select it_id, it_name, it_basic, it_time from {$g4['g4_shop_item_table']} where it_use='1' order by it_time desc");
        while($row = sql_fetch_array($query)) {
            $html = 1;
            //$date = substr($date,0,10) . "T" . substr($date,11,8) . "+09:00";
            $date = date('r', strtotime($row['it_time']));
            $it_basic = $row['it_basic'];
                
            // euc-kr 을 utf-8로 인코딩
            //$wr_subject = convStr($it_basic);
            ?>

  <item>
    <title><?php echo conv_content($row['it_name'], $html); ?></title>
    <link><?php echo g4_SHOP_URL ?>/item.php?it_id=<?php echo $row['it_id'];?></link>
    <description><![CDATA[<?php echo conv_content($it_basic, $html) ?>]]></description>
    <dc:creator>Admin</dc:creator>
    <dc:date><?php echo $date ?></dc:date>
  </item>
            <?php
        }
    }
    */
    ?>
</channel>
</rss>
  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기

댓글목록

등록된 댓글이 없습니다.


Total 2,231건 1 페이지
기술자료 목록
번호 제목
공지 일반
온라인 강좌를 소개합니다. ( update. 2017-12-05 16:33 ) Hit.16011
2230 그누보드
2229 그누보드
XE -> 그누보드5 변경 v7 ( update. 2018-06-12 13:13 ) Hit.115
2228 제로보드
2227 호스팅
무료 호스팅을 제공하는 업체 ( update. 2018-06-12 03:53 ) Hit.92
2226 제로보드
[XpressEngine] 버전 확인하기 ( write. 2018-06-11 ) Hit.75
2225 제로보드
2224 호스팅
let's encrypt 지원하는 호스팅 ( write. 2018-06-07 ) Hit.106
2223 그누보드
2222 영카트
네이버 페이를 영카트에 적용하기 ( update. 2018-06-05 21:36 ) Hit.118
2221 etc언어
[XML] TypeError: Failed to construct 'URL': Invalid URL ( update. 2018-06-05 14:15 ) Hit.101
2220 일반
2219 그누보드
2218 그누보드
2217 그누보드
[G5] XpressEngine 와 그누보드5 테이블 비교 ( update. 2018-05-25 14:05 ) Hit.162
2216 일반
2215 Search
2214 제로보드
[XpressEngine] 설치 사양 ( update. 2018-05-23 18:50 ) Hit.158
2213 영카트
영카트 4 와 영카트 5 의 변경된 함수 ( update. 2018-05-22 00:40 ) Hit.150
2212 호스팅
[Daum] 스마트워크 발송자 이름 변경하기 ( update. 2018-05-17 10:41 ) Hit.175
2211 JavaScript
2210 도메인
국제도메인 삭제복구서비스 ( update. 2018-05-10 14:05 ) Hit.238
2209 MSSQL
getdate() 와 sysdatetime() ( write. 2018-05-09 ) Hit.204
2208 그누보드
[G5] 글 가장 위로 순서 변경하기 ( update. 2018-05-08 12:40 ) Hit.200
2207 호스팅
네임서버 정보 ( update. 2018-05-09 13:45 ) Hit.205
게시물 검색

회원로그인

계좌이체 or 신용카드 결제하기
해피정닷컴으로 대금결제를 할 수 있습니다

접속자집계

오늘
1,419
어제
1,469
최대
3,174
전체
4,069,974

회사명: 해피정닷컴   사업자번호: 119-05-36414   전화: 070-7600-3500   팩스: 02-865-3528   주소: 08394 서울시 구로구 디지털로 242 한화비즈메트로1차 1502호
대표: 정창용   개인정보보호책임자: 정창용   통신판매업신고번호: 2014-서울구로-0074 [사업자등록정보확인]   건강기능식품영업신고번호 제2018-0080452호
Copyright 2001~2018 해피정닷컴. All Rights Reserved.