Como fazer um feed RSS dinâmico em PHP
Introduzimos o formato RSS e mostramos como construir um feed RSS dinâmico em PHP.
O que é um feed RSS?
Na página da Wikipedia sobre RSS podemos ler:
RSS (Really Simple Syndication) é uma família de formatos de feeds web usados para publicar conteúdo actualizado regularmente incluindo, mas não limitado a, entradas de blogs, notícias e podcasts.
É então um formato de ficheiro para publicar conteúdos. É útil porque as pessoas podem facilmente subscrever a esses feeds e receber conteúdo actualizado da sua preferência, quando e como querem, de várias fontes e de forma organizada. Como exemplo de um feed RSS podem ver o feed deste site: feed RSS do Broculos.net.
O software usado para ler feeds RSS é chamado de leitor RSS e pode correr no browser ou no desktop. XML é usado para especificar o formato RSS.
Um link para um feed RSS é normalmente acompanhado com um ícone RSS. Falaremos disto mais à frente.
Exemplo de um ficheiro RSS
O formato RSS é bastante simples. Neste tutorial vamos usar a versão 2.0 da especificação RSS. Vamos apenas usar algumas das suas etiquetas. Devem ver a especificação para saber se precisam ou querem utilizar mais.
Um feed RSS é composto por um canal e por uma colecção de itens. Tomem conhecimento de que existe um número máximo de itens que podem ter num feed RSS. Por exemplo, na versão 0.91 da especificação RSS, o número máximo de itens é 15. Os leitores podem impor os seus próprios limites.
Aqui fica um exemplo simples de um feed RSS.
<?xml version="1.0" encoding="ISO-8859-1"?> <rss version="2.0"> <channel> <title>Example RSS feed</title> <description>Example of a RSS feed, part of a programming tutorial on making a feed in PHP.</description> <link>http://www.broculos.net</link> <copyright>Copyright (C) 2008 Broculos.net</copyright> <item> <title>Example 1</title> <description>This is the description of the first example.</description> <link>http://www.example.com/example1.html</link> <pubDate>Mon, 29 Dec 2008 22:10:00 -0600</pubDate> </item> <item> <title>Example 2</title> <description>This is the description of the second example.</description> <link>http://www.example.com/example2.html</link> <pubDate>Thu, 03 Jan 2008 14:27:15 -0600</pubDate> </item> </channel> </rss>
Como criar um feed RSS dinâmico em PHP
Como podem ver no exemplo, é um formato bastante simples. No entanto, vocês não vão querer fazer um novo ficheiro RSS manualmente sempre que algo muda no vosso site.
Temos, portanto, 2 opções: fazer um script para produzir o ficheiro RSS ou fazer um script que é o ficheiro RSS. Prefiro a última hipótese, porque é mais simples e a primeira solução requer que chamemos o script sempre que quisermos actualizar o feed RSS.
Vamos então fazer o nosso feed RSS sempre actualizado. Só precisamos de produzir as etiquetas apropriadas com o conteúdo. Como isto é apenas uma demonstração, os dados encontram-se definidos no próprio ficheiro. Numa situação realística o conteúdo seria carregado de uma base de dados.
<?php /**
* For demonstration purposes, the data is defined here.
* In a real scenario it should be loaded from a database.
*/ $channel = array("title" => "Example RSS feed", "description" => "Example of a RSS feed, part of a programming tutorial on making a feed in PHP.", "link" => "http://www.broculos.net", "copyright" => "Copyright (C) 2008 Broculos.net"); $items = array( array("title" => "Example 1", "description" => "This is the description of the first example.", "link" => "http://www.example.com/example1.html", "pubDate" => date("D, d M Y H:i:s O", mktime(22, 10, 0, 12, 29, 2008))) , array("title" => "Example 2", "description" => "This is the description of the second example.", "link" => "http://www.example.com/example2.html", "pubDate" => date("D, d M Y H:i:s O", mktime(14, 27, 15, 1, 3, 2008))) ); $output = '<?xml version="1.0" encoding="ISO-8859-1"?>'; $output .= '<rss version="2.0">'; $output .= "<channel>"; $output .= "<title>" . $channel["title"] . "</title>"; $output .= "<description>" . $channel["description"] . "</description>"; $output .= "<link>" . $channel["link"] . "</link>"; $output .= "<copyright>" . $channel["copyright"] . "</copyright>"; foreach ($items as $item) { $output .= "<item>"; $output .= "<title>" . $item["title"] . "</title>"; $output .= "<description>" . $item["description"] . "</description>"; $output .= "<link>" . $item["link"] . "</link>"; $output .= "<pubDate>" . $item["pubDate"] . "</pubDate>"; $output .= "</item>"; } $output .= "</channel>"; $output .= "</rss>"; header("Content-Type: application/rss+xml; charset=ISO-8859-1"); echo $output; ?>
A segunda parte do script constitui a construção do feed RSS. Requer que estejam definidas a variáveis $channel e $items com os valores respectivos a corresponder às chaves necessárias.
Depois de construirmos o XML e guardá-lo na variável $outputprecisamos de o mostrar. Antes de o fazermos enviamos um cabeçalho indicando o tipo de conteúdo do ficheiro. Neste caso dizemos que é um ficheiro XML RSS. Finalmente, mostramos o resultado final. Podem ver este exemplo de feed RSS.
Como fazer com que os browsers reconhecam o feed RSS
Agora devem preocurpar-se em tornar o feed RSS disponível para toda a gente que está interessada em subscrever-se a ele. Além de colocarem uma ligação no vosso site para o feed RSS, também devem fazer mais um passo adicional.
Existe uma etiqueta HTML que serve para indicar que a página tem um feed RSS. Devem colocá-la entre a etiqueta head.
<link rel="alternate" type="application/rss+xml" title="Title of the feed (RSS 2.0)" href="rss.php" />
Devem especificar o título do vosso feed RSS assim como a sua localização.
Para browsers que reconheçam RSS, isto garante uma forma simples de fazer com que o feed RSS seja detectado. Os browsers normalmente indicam que um feed RSS foi detectado ao mostrarem um ícone RSS na barra de localização.
Conclusão
Não se esqueçam - apenas falamos das etiquetas mais básicas. Devem ver a especificação completa para melhor perceberem o que devem incluir e o que devem deixar de fora.
O código que produzimos não é muito reutilizável. Podem optar por construir um escritor de RSS com algumas classes ou então definir uma função.
O que é que há mais ainda a fazer? Devem usar o ícone standard RSS, certificarem-se que o vosso RSS é válido através da validação do vosso feed RSS e para funcionalidades mais avançadas para o vosso feed RSS, como estatísticas de visitantes, podem usar o FeedBurner.
Recursos
- Informação sobre o formato RSS na Wikipedia
- Especificação 2.0 do formato RSS
- Validador de feeds RSS
- Feed Icons
- FeedBurner
Comentários
10:06 11-04-2008nunof
Thanks for the heads up. It was actually a problem in copy-pasting the code.I changed the outer quotes to single quotes.




19:27 09-04-2008sfradette
Dont forget to escape guillemets on the line 23 and 24 otherwise it wont work