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:


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