Desenvolvimento - PHP

RSS para seu site - do começo ao fim (usando PHP)

Como criar um arquivo RSS e usar esta tecnologia em seu website ou blog. Tudo explicado do começo ao fim.

por Paulino Michelazzo



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:

Este artigo é licenciado sob CreativeCommons disponível em http://creativecommons.org/licenses/by-nc-sa/2.0/br/deed.pt

Paulino Michelazzo

Paulino Michelazzo - Especialista em ferramentas de gestão de conteúdo e escritor técnico. Atualmente atende clientes nacionais e internacionais de vários segmentos pela sua empresa Fábrica Livre (www.fabricalivre.com.br) provendo soluções em Drupal, Mambo e Joomla!