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.691 ]

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

Desmistificando o Linux Loader (LILO)

Avast antivírus para GNU/Linux

Gravação de CDs com o K3B

Gerando arquivos JAR com o Eclipse

Alterando as permissões de um arquivo

Leitura recomendada

Inteligência Artificial com PHP e MySQL (parte I)

Acessando o Twitter de 5 formas: protocolo HTTP, cURL, classe HttpRequest (PHP), função http_post_fields() do PHP ou PHP+libcurl

BolachaMALPPH Apache X Lighttpd X PHP/FastCGI X APC X HTTPREF X MySQL

Usando classes em conexão e consultas à banco de dados em PHP

Criando um sistema de banners rotativos 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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts