RSS para seu site – do começo ao fim (usando PHP)
Publicado em: 20/12/2004
Precisei várias vezes de um tutorial para criar um arquivo RSS para que, de forma rápida, pudesse espalhar em vários sites e clientes de RSS as informações postadas em meu website e/ou blog mas nunca encontrei um completo. Alguns davam parte do caminho das pedras, outros somente a picareta e outros ainda somente diziam que eu precisava de uma pedra, nada mais.
Resultado: aproveitando-se do modelo do software livre, pude ter acesso à vários códigos-fonte de várias ferramentas e consegui, com um pouco de esforço, criar uma função para a geração de arquivos RSS de uma forma simples e fácil. Este aprendizado está agora no formato deste tutorial.
Iniciando – o que é RSS
RSS significa Rich Site Syndication (ou outros nomes existentes) e nada mais é que um formato de distribuição de informações entre sites baseado em tags muito parecidas com HTML ou XML (na verdade, ele é oriúndo de XML). Estes arquivos são lidos por aplicativos conhecidos como agregators (Firefox, Evolution, etc) e trazem, rapidamente, as informações que foram “assinadas” de uma forma simples de rápida leitura. Assim, se você quer que qualquer um tenha uma foto de suas notícias, fácil e rapidamente, o RSS é a tecnologia mais indicada para isso.
Como colocar um RSS em meu site? Antes de começarmos, vamos dar uma olhada em um arquivo RSS básico:
<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="0.91">
<channel>
<title>Meu blog</title>
<description>As coisas de meu blog</description>
<link>http://www.michelazzo.com.br/blog.php</link>
<language>pt-br</language>
<item>
<title>Tutorial de RSS</title>
<description>Um tutorial simples sobre RSS</description>
<link>http://www.michelazzo.com.br/blog.php?id=1>/link>
</item>
</channel>
</rss>
Podemos observar que este é um arquivo que contém um “mix” de HTML com XML onde tags separam os blocos de informações que serão lidos pelo aplicativo leitor de RSS. Agora, o que são cada uma destas tags e “blocos”? Vamos ver:
- <?xml version=”1.0″ encoding=”iso-8859-1″?> – tag que indica o tipo de arquivo (hmmm, um xml certo?) e também o formato de codificação de caracteres que está sendo usado.
- <rss version=”0.91″> – qual a versão do RSS que estamos usando (neste caso, 0.91)
- <channel> – tag que une um grande bloco de informações. Obrigatória e deve ser fechada no fim do arquivo
- <title> – O título do conteúdo que está sendo disponibilizando (blog, site, etc). A tag é usada para mostrar nos leitores de RSS o nome do site ou do conteúdo.
- <description> – a descrição do conteúdo
- <link> – o link absoluto para o conteúdo
- <language> – o idioma do conteúdo que está sendo disponibilizando
E os itens são formados por:
- <item> – Indica um bloco de conteúdo. Dentro dele existem várias tags, sendo as obrigatórias as seguintes:
- <title> – título do conteúdo. Pode ser, por exemplo, o título da entrada do blog
- <description> – o conteúdo em sí. Pode ser somente uma chamada para a notícia ou ainda o conteúdo inteiro.
- <link> – link direto para o conteúdo
Muito bem, depois de conhecer o que existe e o que precisamos, vamos fazer o arquivo.
Antes de tudo, vamos criar a base do arquivo XML/RSS:
$arquivo = '<?xml version="1.0" encoding="iso-8859-1"?>'; $arquivo .= '<rss version="0.91">'; $arquivo .= '<channel>'; $arquivo .= '<title>Meu blog</title>'; $arquivo .= '<description>As coisas de meu blog</description>'; $arquivo .= '<link>http://www.michelazzo.com.br/blog.php</link>'; $arquivo .= '<language>pt-br</language>';
Feito isso, pegamos os dados do banco de acordo com nosso interesse e criamos os itens do RSS:
$connect = mysql_connect('localhost','usuario','senha'); // conexão com o BD
mysql_select_db('banco',$connect);
$evt = mysql_query("SELECT * FROM blog WHERE ativo = 1 ORDER BY data DESC LIMIT 20", $connect);
// query básica. Alterar de acordo com as necessidades.
Agora, geramos os itens com o resultado da busca do banco de dados
$corpo = ""; // cria uma variável sem conteúdo
while($prt=mysql_fetch_object($evt)){
$corpo .= '<item>';
$corpo .= "<title>$prt->nome</title>"; // o nome do conteúdo
// o conteúdo em sí
$corpo .= "<description>$prt->artigo</description>";
// o link para o conteúdo
$corpo .= "<link>http://www.michelazzo.com.br/blog.php?id=$prt->id</link>";
$corpo .= '</item>';
}
Juntamos tudo em um único arquivo/variável
$rss = $arquivo.$corpo; $rss .= '</channel></rss>';
Finalmente, vamos escrever o arquivo dentro do disco para disponibilizá-lo.
$arq = fopen('/local/do/arquivo/blog.rss','w+');
// abre o arquivo em leitura e escrita, apagando seu conteúdo antigo
fwrite($arq,$rss); // grava os dados no arquivo
fclose($arq); //fecha o arquivo
Pronto!
Depois de tudo isso, somente é necessário disponibilizar o aquivo em qualquer lugar do site para que os usuários possam ter facilmente as informações mais novas.
Observação: é interessante criar uma função com este código para que, toda vez que seja incluído um novo conteúdo no blog/site, o arquivo seja recriado. Uma outra opção é fazer uso do comando cron do Linux ou ainda o Task Schedule do Windows, agendando para que, a cada X tempo, o arquivo seja recriado com as últimas informações
Para verificar se a sintaxe de seu arquivo está correta, utilize a seguinte ferramenta na web: http://feeds.archive.org/validator/
Caso esteja tudo ok, você já poderá usar o botão RSS no seu site.
Bom proveito!
PS: no botão de arquivos nesta página você pode encontrar este código em formato txt pronto para uso.
Referências:
- Making a RSS Feed – http://searchenginewatch.com/sereport/article.php/2175271
- RSS Workshop – A tutorial – http://www.rssgov.com/rssworkshop.html
- RDF Site Summary – http://web.resource.org/rss/1.0/spec
Este artigo é licenciado sob CreativeCommons disponível em http://creativecommons.org/licenses/by-nc-sa/2.0/br/deed.pt
28 28UTC Maio 28UTC 2009 às 15:45
Artigo muito bom, parabéns