Gerando feed RSS de notícias em PHP

Como criar um sistema RSS em PHP para publicar a informação das novidades ou notícias de nosso web site ou blog.

Por Alejandro Suazo


Publicado em: 19/11/07
Valorize este artigo:
Muitas vezes nos perguntamos como gerar feed RSS para nossos blogs ou sistema de notícias. Assim como muitos, eu pensava que era tarefa mais complicada, porém com observação e um pouco de engenho tudo se pode. A seguir explicarei uma das formas de gerar RSS para nossos sistemas. Necessitaremos que nossas notícias sejam recolhidas de um banco de dados.

O XML às vezes é complexo de entender, para mim ainda é, porém como disse: Com engenho tudo é possível. O primeiro é saber: Que etiquetas ocupam as diferentes versões de RSS?, pois fácil, vamos a algum site que gere tais RSS, por exemplo, um Blog e olhamos o código fonte do tal RSS. Já temos aproximadamente 90% do "trabalho" feito, só falta o código de nosso documento em PHP. Há que ter claro que o XML permite que criemos nossas próprias etiquetas, as que veremos a seguir, podemos tomá-las como padrão para os feeds.

Para o exemplo se utilizará RSS 2.0:

<?
header('Content-Type: text/xml'); //Indicamos ao navegador que é um documento em XML
//Versão e jogo de caracteres de nosso documento
echo <?xml versao="1.0" encoding="iso-88859-1"?>;
//Aqui a conexão ou arquivo de conexão ao banco de dados
//Fazemos a consulta e a ordenamos por post para mostrar sempre o último
$resultado=mysql_query("select * from noticias order by id_post Desc",$link);
$row=mysql_fetch_array($resultado);
//"Cortaremos" o artigo em 300 caracteres para nossa descrição
$descricao=substr($row[artigo],0,300)."...";
// E geramos nosso documento
echo '<rss versao="2.0">
<channel>
    <title>Nome de nosso blog ou web</title>
    <link>http://www.minhaurl.com/</link>
    <language>es-CL</language>
    <description>Descrição de nosso blog ou web</description>
    <generator>Autor del RSS</generator>
    <item>
<title>'.$row[titulo].'</title>
<link>http://www.minhaurl.com/noticias.php?id='.$row[id_post].'</link>
<comments>http://www.minhaurl.com/comentarios.php?id='.$row[id_post].'
</comments>
<pubDate>'.$row[data].'</pubDate>
<category>'.$row[categoria].'</category>
<guid>http://www.miurl.com/comentarios.php?id='.$row[id_post].'</guid>
<description><![CDATA['.$descripcion.']]></description>
<content:encoded><![CDATA['.$row[artigo].']]></content:encoded>
</item></channel></rss>';
?>


Podemos ver que a estrutura do documento é simples e até repetitiva. Basicamente, podemos dividi-lo em dois: <channel> e <item> em onde <channel> contem a <item>. O primeiro bloco antes de <item> se enche com os dados de nosso blog ou web, logo sob a etiqueta mencionada vão os dados do post ou notícia a mostrar

Uma prática recomendada é utilizar a etiqueta <content:encoded>, para proporcionar a informação que contem nosso artigo completo ao invés de <description> por que?, porque os sistemas de recopilação de feeds ou leitura destes, lêem a etiqueta <description> para dar ao leitor um resumo do que trata o post. Mencionamos, porque há sistemas de blog que usam <description> para gerar a informação do artigo completo e não dão a opção de ver se queremos ou não seguir lendo o que nos oferecem, a parte de ocupar espaço. Para estas duas etiquetas usamos a seção XML<![CDATA]]>(character data), basicamente para que o XML não interprete certos caracteres como próprios de sua linguagem e trate de executá-los.

Por último, nos cabe dizer que devem fechar bem todas as etiquetas do documento ou notícia a qual se fará feed, ou senão dará um charmoso erro.

Quanto ao script,, pode-se dar mais opções (embora isto seja o mais básico), como por exemplo: Fazer um while logo de <item> e mostrar todas as notícias, ou a quantidade que quiser, usando limit na chamada ao banco.





Comentários do artigo
Foi enviado 1 comentário ao artigo
1 comentário não revisado
0 comentários revisados

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato