因為之前(
http://forum.lifetype.org.tw/index.php?topic=1124.0)寫了簡單的程式,輸出 LifeType 的文章成為靜態 HTML ,今天把這個靜態頁面也加上 RSS 的功能,以後只想看 HTML 版的人可以自行選擇
除了透過 LifeType 本身的 API 從資料庫找出文章,另外在網路上找到一個 FeedCreator (
http://www.bitfolge.de/rsscreator-en.html),就可以方便地建立所需要的 RSS 檔案了。
※ 請注意:若您使用FeedCreator建立 RSS,而且使用 RSS0.3,1.0,2.0 這三種格式,請將 feedcreator.class.php 裡面的 497 行改為:
var $encoding = "utf-8";
之前的 plog_c.php 和 plog_index.php 輸出程式也要
加上如下的 HTML 標籤(xyzxyz請換成您的網域名稱):
<link rel="alternate" type="application/xml" title="RSS 2.0" href="
http://xyzxyz.com/plog/html/rss20.xml">
才能讓使用者進入備份頁面時知道有 RSS 可用。
※ 本文適合 HTML 和 PHP 稍有基礎者
※ 備份頁面輸出範例在此(在此可用 firefox 訂閱備份頁面的RSS):
http://sky-heart.com/plog/html/※ RSS輸出範例:
http://sky-heart.com/plog/html/rss20.xml程式如下:
<?
include("feedcreator.class.php");
$rss = new UniversalFeedCreator();
$rss->useCached();
$rss->title = "XYZ's Blog (HTML)";
$rss->description = "XYZ's Blog -- simple HTML version";
$rss->link = "http://www.xyzxyz.com/plog/1";
$rss->syndicationURL = "http://www.xyzxyz.com/plog/1/".$PHP_SELF;
if (!defined( "PLOG_CLASS_PATH" )) {
define( "PLOG_CLASS_PATH", dirname(__FILE__)."/");
}
include_once( PLOG_CLASS_PATH."config/config.properties.php" );
include_once( PLOG_CLASS_PATH."class/dao/articles.class.php" );
// plog 的資料表字首
$strPlogPrefix = $config["db_prefix"];
// 輸出路徑,最後面要加斜線(目錄要設定為可讀寫,例如777)
$strRssPath = PLOG_CLASS_PATH."html/";
// 輸出檔名
$strOutput = "rss20.xml";
// 網誌名稱
$strBlogName = "XYZ's Blog";
// 網誌編號
$strBlogNumber = "1";
$strTableArticleText = $strPlogPrefix."articles_text";
$strTableArticle = $strPlogPrefix."articles";
$strTableUsers = $strPlogPrefix."users";
$sql = "select * from $strTableArticleText,$strTableArticle ";
$sql = $sql."where $strTableArticleText.article_id = $strTableArticle.id ";
$sql = $sql."and $strTableArticle.blog_id = $strBlogNumber ";
$sql = $sql."and $strTableArticle.status = 1 ";
$sql = $sql."order by article_id desc";
$articles = new Articles();
$result = $articles->getBlogArticlesByQuery( $sql );
$i=0;
foreach( $result as $article ) {
$item = new FeedItem();
$item->title = $article->getTopic();;
$item->link = "http://xyzxyz.com/plog/html/".$article->getId().".html";
$item->description = $article->getText();
$item->date = $article->getDate();
$item->source = "http://xyzxyz.com/plog/html/";
$item->author = "XYZ";
$rss->addItem($item);
$i++;
if ( $i > 20 )
break;
}
$rss->saveFeed("RSS2.0", $strRssPath.$strOutput);
?>