메뉴 건너뛰기

infra

제로보드용 rss생성 파일

박영식2007.01.26 18:33조회 수 3347댓글 1

    • 글자 크기
[기존 폴더의 수정할 파일부터 설명하겠다.]



1. 스킨파일 수정

zb41폴더 아래 skin폴더에 있는 자신이 선택한 스킨폴더내에는 공통적으로 setup.php가 있다.

적절한 부분(필자의 경우 login/join과 logout/setup 들어가는 데에)에 아래의 코드를 삽입한다.



    <a href=<?=$id?>.xml target=_blank> RSS </a>



--> 이것은 xml로 만들어진 문서에 대한 경로이다.



2. write_ok파일 수정

  $allowBoard = "ID1|ID2";  // RSS 생성을 허용할 게시판 명입니다. "|"으로 구분합니다. 만일 모든 게시판에만 허용한다면 이 줄과 아래 9번째줄 if(!eregi ... 로 시작하는 부분을 지우기 바랍니다.
if(eregi($id, $allowBoard)){ //RSS 생성을 허용할 게시판이면 XML문서 허용 파일(rss.php)로 이동함.
  movepage("rss.php?id=$id&page=$page&page_num=$page_num&select_arrange=$select_arrange&desc=$des&sn=$sn&ss=$ss&sc=$sc&keyword=$keyword&no=$no&category=$category");
  }
else{
movepage($view_file."?id=$id&page=$page&page_num=$page_num&select_arrange=$select_arrange&desc=$des&sn=$sn&ss=$ss&sc=$sc&keyword=$keyword&no=$no&category=$category");
  }



제일 아래에, "// 페이지 이동" 주석 아래에 있는 부분이다.



기존의 내용은 if문 없이,

  movepage($view_file."?id=$id&page=$page&page_num=$page_num&select_arrange=$select_arrange&desc=$des&sn=$sn&ss=$ss&sc=$sc&keyword=$keyword&no=$no&category=$category");



만 있다. if문의 역할은 주석과 같이 RSS 생성을 허용할 게시판을 등록하여 놓으면, XML파일을 생성하는 rss.php파일로 이동한다.



[추가 파일의 수정할 파일들을 설명하겠다.]



1. rss.php 파일이다.



<?
/*start the output buffering*/
ob_start();
/*include the tempate file*/
require("zero2rss.php");
/*get the contenst of the output buffer*/
$data = ob_get_contents();
/*write the contents to a file*/
$fp = fopen($id.".xml","w");
fwrite($fp,$data);
fclose($fp);
/*clear the output buffer*/
ob_clean();
movepage("zboard.php?id=$id&page=$page&page_num=$page_num&select_arrange=$select_arrange&desc=$des&sn=$sn&ss=$ss&sc=$sc&keyword=$keyword&no=$no&category=$category");
/*display some other page - like "you have successfully written a file" or something*/
//require("return_url.php");
?>


중요한 내용은 XML파일을 기록한다는 것이다. 대상은 require()함수 안의 파일이다.

해당 함수들은 php.net을 참고하여 알아보면 좋겠지만, 어려울 것이다. C언어 등을 배운 사람이라면 fwrite()함수로 파일을 생성하는 부분을 쉽게 찾아낼 수 있을 것이다. 편의대로 수정하면 된다.



2. zero2rss.php



<?
  $url = "http://suritam9.woweb.net/www/php/zb41/";   // 제로보드 루트. url 변수는 끝에 슬래시 "/"가 꼭 있어야 합니다.
  $filename = "zero2rss.php?id=".$id;    // zero2rss.php 파일명을 수정했다면 이부분도 수정하시기 바랍니다.
  $maxLength = 500;    // 게시물 내용중 일부분을 잘라낼 캐릭터 숫자입니다.

include "lib.php";
echo "<?xml version="1.0" encoding="EUC-KR" ?>";
?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/">
<dc:language>ko</dc:language>
<title> <?=$id?> 게시판 RSS</title>
<link><?=$url?><?=$filename?></link>
<admin:generatorAgent rdf:resource="http://www.feople.com/" />
<channel>
<?

if(!$connect) $connect=dbconn();

$que = "select no, subject, memo, reg_date from zetyx_board"."_$id order by no desc limit 10";

$result = mysql_query($que,$connect) or Error(mysql_error());

while( $data=@mysql_fetch_array($result) ) {
  $memo = $data[memo];
  $memo = stripslashes($memo);
  $memo = cut_str($memo,$maxLength);
  $memo = str_replace("  ","  ",$memo);
  $memo = str_replace("&","&",$memo);  // 이부분이 수정한 것입니다.
            $memo = str_replace("        ","t",$memo);
  $memo = del_html($memo);
  $memo = str_replace("n","<BR>",$memo);

  echo "<item>n";
  echo "<title><![CDATA[  $data[subject]  ]]></title>n";
  echo "<link>".$url."view.php?id=$id&no=$data[no]</link>n";
  echo "<description><![CDATA[  $memo  ]]></description>n";
  //echo "<pubDate>".date("m/d H:i", $data[reg_date])."</pubDate>n";
  echo "</item>n";
}

mysql_close($connect);
?>
</channel>
</rss>


rss파일을 만드는 핵심 코드라고 하겠다. 사실 php를 할 줄 아는 사람이라면 rss서식에 해당 data를 넣었다는 것을 쉽게 찾아낼 수 있을 것이다. 사실 잘 안되서 엄청난 디버깅 시간이 걸렸다. 사실 지금 되긴 하는데, 뭐가 문제였는지 모르겠다. 원본에서 수정한 것은 앰퍼샌드(&)를 "&"로 수정하는 str_replace()함수를 사용한 것이고, naver와 egloos의 RSS XML문서를 보고 약간씩 수정하였다.





[결론 및 의견]

include()함수로 write_ok.php에 rss.php 파일을 포함시키면, 다른 페이지로 왔다갔다 하지 않아도 될 것 같다. 그런데, 약간의 문제가 있어서 현재는 이런 형태이다. 개선해서 다시 올리도록 하겠고, 문제도 규명해 보겠다.



* 소스를 얻은 페이지 : http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=rss&select_arrange=headnum&desc=asc&no=4936
박영식 (비회원)
    • 글자 크기

댓글 달기

댓글 1
이전 1 ... 2 3 4 5 6 7 8 9 10 11다음
첨부 (0)
위로