もし、RSSも公開しようと考えてみるのなら更新履歴は、タイトルとリンク、内容をHTMLに記述するように すると良いかもしれません。
RSS1.0のitemには、title、link、descriptionを記述します。これにあわせてHTMLを作成することでRSSの 生成を簡単なスクリプトで行うことができます。
当サイトでは、タイトルとリンクをdt要素で、内容をdd要素に記述するよう変更しました。
私が使用しているPHPのスクリプトを紹介します。PHPとSmartyを使用してRSSファイルを出力しています。
<?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 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:cc="http://web.resource.org/cc/" xmlns="http://purl.org/rss/1.0/"> <channel rdf:about="http://【アドレス】/【RSSファイル】"> <title>【タイトル】</title> <link>http://【アドレス】/</link> <description>【Channelの説明】</description> <items> <rdf:Seq> {$ITEMS_SEQ} </rdf:Seq> </items> </channel> {foreach item=ITEM from=$ITEMS} <item rdf:about="{$HOST}{$ITEM.link}"> <title>{$ITEM.title}</title> <link>{$HOST}{$ITEM.link}</link> <description>{$ITEM.desc}</description> </item> {/foreach} </rdf:RDF>
<?php require_once('ExSmarty.class.php'); //----------- 初期設定 --------------- $file_name = "../index.rdf"; //出力ファイル名 $title_element = "dt"; //更新タイトルとリンクの要素 $desc_element = "dd"; //更新内容の要素 $lines = file('../index.shtml'); //抽出元ファイル $host = 'http://【アドレス】/'; //ホストアドレス //テンプレートオブジェクトのインスタンス化 $objTpl = new B3Tpl(); //Smartyの派生クラス //---------- 更新履歴の抽出 ---------- foreach($lines as $line){ //タイトルとリンクにマッチ if(ereg("<${title_element}.*>.*<a href=\"(.*)\">(.*)</a>",$line,$history)){ $items_seq .= " <rdf:li rdf:resource=\"$host$history[1]\"/>\n"; $items[++$idx]['link'] = $history[1]; $items[$idx]['title'] = $history[2]; $nIsItem = 1; }else if(ereg("<${desc_element}.*>(.*)</${desc_element}>",$line,$desc) and $nIsItem == 1){ //内容を1要素分だけ取得(dd要素の子に要素が含まれる場合、replace処理が必要かな。) $items[$idx]['desc'] = $desc[1]; $nIsItem = 0; } } $objTpl->assign('ITEMS_SEQ',$items_seq); $objTpl->assign('HOST',$host); $objTpl->assign('ITEMS',$items); //UTF-8へ変換 $output = mb_convert_encoding($objTpl->fetch("index.tpl"),"UTF-8"); //ファイル出力 $file = fopen($file_name, "a") or die("OPEN ERR $file_name"); flock($file, LOCK_EX); fputs($file, $output); flock($file, LOCK_UN); fclose($file); ?>
Copyright 1997-2010 BBB All rights reserved.