www.Litecode.ru – Сборник рецептов для создания сайтов

RSS для сайта на perl

ГлавнаяPerl → RSS для сайта на perl

Если решили запустить у себя на сайте RSS и возникли трудности — не отчаивайтесь, это очень просто. Для начала вспомним теорию. RSS (Really Simple Syndication) это XML формат принятый за стандарт, для трансляции анонсов статей, новостей, блогов и так далее. На сайте размещается ссылка на xml — файл, а Ваш rss — клиент запоминает эту ссылку и систематически отслеживает изменения. В роли rss — клиентов выступают почтовые клиенты, браузеры.

Для того, чтобы постоянно поддерживать свой xml — файл в актуальном состоянии, необходимо его периодически обновлять выборкой из базы. Руками делать довольно хлопотно и поэтому мы воспользуемся perl. Если вы делаете rss на perl впервые, то предположу что модуля XML::RSS у Вас пока нет. Значить первым делом нужно его установить.

Далее создаем скрипт, который будет периодически генерить rss.xml:

#!/usr/bin/perl 
use strict;
use utf8;
use XML::RSS;
use DBI;

my $rss = new XML::RSS (version => '2.0', encoding => 'utf-8');
my $ts = localtime;
$ts =~ s/^(\w+) (\w+) (\d+) (\d+:\d+:\d+) (\d+)/$1, $3 $2 $5 $4 +0300/;

my $dbh = DBI->connect( "dbi:mysql:localhost:my_db" , 'user', 'password' );

$rss->channel(
            title          => 'www.your-site.ru',
            link           => qq{http://www.your-site.ru},
            language       => 'ru',
            description    => 'RSS лента сайта www.your-site.ru',
            copyright      => 'Copyright 2010, www.your-site.ru',
            pubDate        => $ts,
            lastBuildDate  => $ts
);

my $sth = $dbh->prepare("SELECT ... bla bla bla WHERE ...");
$sth->execute();
while(my @i = $sth->fetchrow_array){

    $rss->add_item(
            title		=> 'title',
            link		=> qq{http://www.your-site.ru/news/...},
            pubDate		=> 'Wed, 13 Oct 2010 00:00:00 +0300',
            description	=> 'description'
	);
}

$rss->save("/full/path/rss.xml");

Это конечно урезанный пример, но зато более обобщенный и понятный. Даже если нет возможности поставить его в cron, можно запускать вручную через консоль. И последний штрих, нужно в head страницы вставить мета тег со ссылкой на Ваш RSS канал:


где /rss.xml путь к вашему xml - файлу.