В общем ловите. Только следуйте инструкциям:
1 сделайте копию своего модуля Sanitarium_WL.pm
2. в папку шаблонов tmp-main киньте два файла rss.txt
rss_item.txt
Вот их примерное содержимое
news_rss.txt----------------------------------------------
<%cat_name%>
<%cat_url%>
ru
Copyright 2004, ???? ??????.
vasyapupkin@site.ru
<%rss%>
--------------------------------------------------------------
rss_item.txt--------------------------------------------------------------
<%title%>
<%article_url%>
<%preview%>
---------------------------------------------------------------
3 В Sanitarium_WL.pm заменить подпрограмму sub print_news (1019) на такую:
-------------------------------------------------------------------
sub print_news {
#--------------------------------------------------
my ($cat, $how_news, $news_js, $html, $news_txt, $use_txt, %news);
my $self=shift;
$cat=shift;
$how_news=shift;
$use_txt=$self->{\'txt_news\'};
$self->{DB_File}="$self->{\'data\'}/$cat";
$self->{DB_Field}=\'index\';
unless($self->{\'tmp_news\'}){$self->{\'tmp_news\'}=$self->load_tempfile("$self->{\'tmpl_dir\'}/tmp-main/news.txt");}
#RSS ADDON: Load RSS Templates
unless($self->{\'tmp_rss\'}){$self->{\'tmp_rss\'}=$self->load_tempfile("$self->{\'tmpl_dir\'}/tmp-main/news_rss.txt");}
unless($self->{\'tmp_rss_item\'}){$self->{\'tmp_rss_item\'}=$self->load_tempfile("$self->{\'tmpl_dir\'}/tmp-main/rss_item.txt");}
%news=$self->get_nn_recs($how_news);
foreach my $key(sort {$b <=> $a} keys %news){
$self->unpack_rec($news{$key});
$self->get_author_info();
if ($self->{\'static_pages\'}){$self->{\'article_url\'}="$self->{\'public_url\'}/$self->{\'cat_id\'}/$key"."_1.$self->{\'ext\'}";}
else {$self->{\'article_url\'}=$self->{\'view_cgi_url\'}."?id=$key&cat_id=$self->{\'cat_id\'}&page=1";}
$html=$self->small_parsing($self->{\'tmp_news\'});
#RSS ADDON
$self->{\'rss\'} .= $self->small_parsing($self->{\'tmp_rss_item\'});
if ($use_txt){
$news_txt .= "$html\\n" ;
}
else {
$html=~ s/"/\\\\"/g;
$html=~ s/[\\n\\r]//g;
$html=~ s/\'/\\\'/g;
$news_js .= qq~document.write("$html");\\n~;
}
}
#CHECK DIRS:
if (!(-e "$self->{\'public_dir\'}/news")){
mkdir("$self->{\'public_dir\'}/news", 0777) or croak("Can\'t mkdir $self->{\'public_dir\'}/news, reason: $!");
chmod(0777, "$self->{\'public_dir\'}/news") or croak("Can\'t chmod $self->{\'public_dir\'}/news, reason: $!");
}
#RSS PRINT
open (RSS, ">$self->{\'public_dir\'}/news/$cat.xml") or croak("Can\'t open RSS, reason: $!");
if ($USE_FLOCK){flock(RSS, 2);}
print RSS $self->small_parsing($self->{\'tmp_news_rss\'});
close RSS;
#PRINT in *.js
if ($news_js){
open (NEWS, ">$self->{\'public_dir\'}/news/$cat.js") or croak("Can\'t open NEWS, reason: $!");
if ($USE_FLOCK){flock(NEWS, 2);}
print NEWS $news_js;
close NEWS;
}
#Print in *.txt
if ($news_txt){
open (NEWSTXT, ">$self->{\'public_dir\'}/news/$cat.txt") or croak("Can\'t open NEWSTXT, reason: $!");
print NEWSTXT $news_txt;
close NEWSTXT;
}
}
все.
Для каждой категории будут созданы rss ленты + общая на всех
все они будут лежать там же где и обычные новости
http://site.ru/public_sanitar/newsindex.xml - общая лента
1.xml - лента категории с id=1 и т.д.
Кол-во новостей столько сколько вы указали в конфиге
Я не пробовал, но должно работать, если я опечаток не сделал. Если что не так -кидайте сюда, поправим.