Atom Feedを1.0にアップグレード
Serene BachのAtom Feedがバージョン0.3と古かったので、バージョン1.0にアップグレードした。変更するのは/lib/sb/App/Feed.pm
と/lib/sb/App/resource/default_atomfeed.xml
の2ファイル。まずはFeed.pm
の129行目にあるサブルーチンへ以下の下線部のとおり追加し、{feed_entry_author_url}
というテンプレートタグを新規作成した。
sub _entry {
my $cms = shift;
my %var = @_;
my $num = 0;
my $cgi = sb::Config->get->value('conf_srv_cgi') . sb::Config->get->value('basic_sb');
foreach my $entry ( @{$var{'entry'}} ) {
my $tz = $entry->tz;
my $body = $entry->formated_body;
$body =~ s/&(\s|\n)/&$1/g; # avoid an error of parsing xml (imperfect)
my $pid = ( defined($var{'user'}->{$entry->auth}) ) ? $var{'user'}->{$entry->auth}->id : '';
if ($entry->more ne '') {
$body .= sprintf(LINK_TO_MORE,
$entry->permalink('cat'=>$var{'cat'},'mode'=>'more'),
$var{'lang'}->string('parts_more_rss')
);
}
$cms->num($num);
$cms->tag('feed_entry_url'=>=>$entry->permalink('cat'=>$var{'cat'}));
$cms->tag('feed_entry_title'=>$entry->subj);
$cms->tag('feed_entry_summary'=>sb::Text->entitize($entry->sum));
$cms->tag('feed_entry_description'=>$body);
if ( $entry->cat ne '' and defined($var{'cat'}->{$entry->cat}) ) { # category
$cms->tag('feed_entry_category'=>$var{'cat'}->{$entry->cat}->fullname($var{'cat'}));
} else {
$cms->tag('feed_entry_category'=>'-');
}
$cms->tag('feed_entry_date'=>
sb::Time->format(
'time' => $entry->date,
'form' => TIME_FORMAT . substr($tz,0,3) . ':' . substr($tz,3,2),
'zone' => $tz,
'lang' => 'en'
)
);
$cms->tag('feed_entry_modified'=>
sb::Time->format(
'time' => $entry->date,
'form' => TIME_FORMAT . 'Z',
'zone' => '+0000',
'lang' => 'en'
)
);
$cms->tag('feed_entry_author'=>$entry->authname($var{'user'}));
$cms->tag('feed_entry_author_url'=>$cgi.'?pid='.$pid);
$cms->tag('product_name'=>$sb::PRODUCT);
$cms->tag('product_webpage'=>$sb::WEBPAGE);
$cms->tag('site_lang'=>$var{'lang'}->code);
$num++;
}
return($num);
}
次にdefault_atomfeed.xml
を以下のとおり全面的に書き換えた。
<?xml version="1.0" encoding="{feed_site_encoding}" ?>
<feed xmlns="http://www.w3.org/2005/Atom"
xml:lang="{site_lang}">
<!-- BEGIN title -->
<title>{site_title}</title>
<link rel="alternate" type="text/html" href="{site_top}" />
<id>{site_top}</id>
<link rel="self" type="application/atom+xml" href="{feed_url}" />
<updated>{feed_date}</updated>
<subtitle><![CDATA[{blog_description}]]></subtitle>
<generator uri="{script_webpage}" version="{script_version}">{script_name}</generator>
<!-- END title -->
<!-- BEGIN feed_entry -->
<entry>
<title type="text">{feed_entry_title}</title>
<link rel="alternate" type="text/html" href="{feed_entry_url}" />
<id>{feed_entry_url}</id>
<published>{feed_entry_date}</published>
<updated>{feed_entry_modified}</updated>
<summary>{feed_entry_summary}</summary>
<author>
<name>{feed_entry_author}</name>
<uri>{feed_entry_author_url}</uri>
</author>
<category term="{feed_entry_category}" />
<content type="html"><![CDATA[{feed_entry_description}]]></content>
</entry>
<!-- END feed_entry -->
</feed>
Comments