Como atribuir notícias RSS ao seu site usando ATOM e PHP

Atom é o nome dado a um estilo baseado em conteúdo XML e metadata, ou seja, é um protocolo em nível de aplicação para publicar e editar fontes web que são periodicamente atualizados, um exemplo para isto são os blogs.

[ Hits: 25.811 ]

Por: Roberson Carlos em 22/06/2006 | Blog: http://carlrobers.wordpress.com


Colocando as coisas para funcionar com PHP



Como você pode notar, as entradas em um Feed podem vir de um banco de dados e ocupar muito espaço no feed, o bom seria pegar os últimos 15 posts do site em questão e enviá-los para uma variável fazendo uso de um loop como no exemplo:

<?php
$tabela := "artigos";
$data=date("Y-d-m G:i:s");

// Conecta ao banco de dados MySQL
$db=mysql_connect($host, $sql_login ,$sql_passwd);
mysql_select_db ($nome_bd);

//estou assumindo que a tabela
//chame-se artigos na variável $tabela

$sql="SELECT * FROM $tabela ORDER by ID desc";

$resultado = mysql_query($sql,$db);
  
if (mysql_numrows($resultado)){
   $a1=0;
   while (($linha = mysql_fetch_row($resultado)) and ($a1!=15)) {
      $a1=$a1+1;
      $conteudo.="
      <entry>
        <title>$linha[4]</title>
        <link href=http://www.genova.einet.com.br/artigos.php?id=$linha[0]/>
        <id>http://www.genova.einet.com.br/artigos.php?id=$linha[0]/</id>
        <updated>$linha[3]</updated>
        <summary>$linha[5]</summary>
        <author>
         <name>$linha[1]</name>
        </author>
      </entry> ";
   }
}

mysql_free_result($resultado);
if ($db){
   mysql_close($db);
   }
?>
//Estou assumindo que a
//Linha 4 = Título
//Linha 0 = ID do artigo
//Linha 3 = Data
//Linha 5 = Descrição
//Linha 1 = Autor
//Faça as alterações de forma que seu script funcione.
?>

Este simples script irá pegar os dados do banco de dados e criar as entradas, uma por uma, até um total de 15 entradas de acordo com a variável $a1. Em seguida você deverá adicionar o cabeçalho do Feed:

<?php
echo" <?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
     <title>Genova Home Page - News Feed</title>
     <link href=http://www.genova.einet.com.br/>
    <updated>$data</updated>
  
   <author>
     <name>Roberson Carlos Fox</name>
     <email>[email protected]</email>
     <uri>http://www.genova.einet.com.br/about-me</uri>
   </author>
  
     <id>http://www.genova.einet.com.br</id>
   <rights> © 2002-2006 Roberson Carlos Fox </rights>
   <subtitle>Esteja atualizado com o que há de melhor na web</subtitle>
   <category term=Informática/>
  
   $conteudo;
    
</feed>"
?>

Por fim, uma atenção especial para a variável "conteudo", ela é gerada no primeiro script e armazena as entradas do Feed.

Com estas poucas informações você com certeza será capaz de criar um RSS em seu site.

[]'s

Roberson Carlos Fox
robersonfox at genovaengine.com

Página anterior    

Páginas do artigo
   1. O que é o ATOM
   2. Elementos (Entradas) do Corpo (ENTRY)
   3. Exemplo de feed
   4. Colocando as coisas para funcionar com PHP
Outros artigos deste autor

Instalando Apache Tomcat em Linux 2.6

Gravação de CDs com o K3B

Gravando CDs em modo texto

Gerando arquivos JAR com o Eclipse

Desmistificando o Linux Loader (LILO)

Leitura recomendada

Guia completo do Ocomon no Linux - Módulo cliente, abertura de ocorrência (exclusivo VOL)

Utilizando PHP e Apache para desligar um Ubuntu

Criando sites para celular com WML

Prado - Orientação a componentes em PHP

Trabalhando com datas em PHP

  
Comentários
[1] Comentário enviado por lipse em 23/06/2006 - 11:12h

Olá Roberson,

Parabéns pelo tutorial. Sou leigo no assunto e gostaria de saber como fazer um RSS de outros sites (de um site que eu gosto mas que ainda não tem um RSS)?

É que vi o Bruno Torres (http://www.brunotorres.net/) dizendo que fez um RSS pra alguns sites que ele gosta, aí fiquei curioso, pois achava que somente o dono do site poderia fazê-lo.

Obrigado.

[2] Comentário enviado por robersonfox em 24/06/2006 - 19:01h

Caro Amigo Lipse,
posso estar até enganado, porém, acho que é impossível, se você notar, será necessário ter acesso ao banco de dados do servidor em questão, e te pergunto, qual webdesign faria isto, daria todos os dados para que outros pegassem dados do seu banco de dados, o que o o Bruno Torres deve ter feito é pego os rss's com um leitor tipo o rssowl.

[3] Comentário enviado por robersonfox em 24/06/2006 - 19:10h

Eu havia pedido a um moderador o qual não me recordo o nome para não colocar este artigo no ar por falta de um único parâmetro que não permitiria que este funcionasse, mas acredito que ele não recebeu o recado, mas então vai aí uma correção para o script em PHP acima.

Antes de:

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

Insira:

header("Content-Type: text/xml");

Cado não fizer isto não funciona.

[4] Comentário enviado por lipse em 24/06/2006 - 20:23h

Oi Roberson,

Também acho isso, mas veja você mesmo:

http://brunotorres.net/2005/06/24/feed-atom-charges

Eu ainda não consegui entender o que ele fez, mas, como disse no outro post, sou leigo no assunto.

[5] Comentário enviado por robersonfox em 24/06/2006 - 22:11h

O RSS que você está falando pertence ao charges uol, é um RSS 2.0 que é gerado por este arquivo http://charges.uol.com.br/arquivo.php.

[6] Comentário enviado por lipse em 24/06/2006 - 23:39h

O Bruno usa esse arquivo como fonte pro feed que ele faz?

[7] Comentário enviado por denes em 24/05/2007 - 16:11h

Olá, Roberson!
Parabéns pelo artigo. Simples e objetivo. Era exatamente o que eu estava procurando.
Gostaria de saber: é possível você ou o moderador fazer a correção mencionada acima 'header("Content-Type: text/xml");' no corpo do artigo? Ou um alerta no início dele? Às vezes lemos o artigo e não os comentários.
tks!

[8] Comentário enviado por robersonfox em 17/06/2007 - 13:11h

denes, eu até que pedi mas os caras não deram ouvido


Contribuir com comentário