Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Mão na Massa - Programação Shell

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

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

Colaboração: Roberson Carlos Fox

Data de Publicação: 04 de Julho de 2006

Atom é o nome dado a um estilo baseado em conteúdo XML e meta data, 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.

Os feeds devem ser formados em formato XML e são identificados como application/atom+xml media type.

O funcionamento dele não difere das Markup Languages tradicionais, com cabeçalhos, títulos e corpo, como no HTML 4.0.

Elementos do Feed (Cabeçalho)

Um feed consiste de alguns Metadata seguidos por alguns números de entrada. Todo feed deve conter um cabeçalho.

  <?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>2006-01-05 3:05:47</updated>
  
  <author>
  <name>Roberson Carlos Fox</name>
  <email>robersonfox@genovaengine.com</email>
  <uri>http://www.genova.einet.com.br/about-me</uri>
  </author>
  
  <id>http://www.genova.einet.com.br</id>
  <icon>http://www.genova.einet.com.br/img/genova.ico</icon>
  <logo>http://www.genova.einet.com.br/img/G3.jpg</logo>
  <rights> © 2002-2006 Roberson Carlos Fox </rights>
  <subtitle>Esteja atualizado com o que há de melhor na web</subtitle>
  <category term=Informática/>
  </feed>

Elementos requeridos do cabeçalho:

Abaixo se segue uma lista com os principais elementos requeridos em um feed e um exemplo.

  • ID, Identifica o Feed usando um universal e permanente URL, você pode colocar seu Nome de Domínio nesta parte. Ex.:
      <id>http://www.genova.einet.com.br</id>
    

  • Title, contem o título do Feed, este valor não pode ser deixado em branco de maneira alguma. Ex.:
      <title>Genova Home Page - News Feed</title>
    

Elementos recomendados:

  • Author, nome do autor do Feed, um feed pode ter inúmeros autores e um feed precisa ter ao menos um autor. Ex.:
      <author>
      <name>Roberson Carlos Fox</name>
      <email>robersonfox@genovaengine.com</email>
      <uri>http://www.genova.einet.com.br/about-me</uri>
      </author>
    
  • Link, identifica uma HP relacionada, o tipo de relação é atribuído pode atributo rel. Ex.:

      <link rel="self" href=" http://www.genova.einet.com.br/" />
    

Elementos (Entradas) do Corpo (ENTRY)

Um exemplo de uma entrada seria um único post em um site.

  <entry>
  <title>Título do artigo</title>
  <link href=http://www.genova.einet.com.br/artigos.php?id=46/>
  <id>http://www.genova.einet.com.br/artigos.php?id=46/</id>
  <updated>05-01-2006 02:56:00</updated>
  <summary>Descrição do artigo</summary>
  <author>
  <name>Roberson Carlos Fox</name>
  </author>
  </entry>

Elementos requeridos do corpo:

Aqui esta uma lista de elementos requeridos para o Feed, cada um tem uma breve descrição e é seguido de um exemplo, como no tópico acima.

  • ID, Title, tem o mesmo significado que o do cabeçalho, salvo que eles se referem ao artigo e não ao Feed. Ex.:
      <id>http://www.genova.einet.com.br/artigos.php?id=46</id>
    

  • Updated, Indica quando foi a ultima vez que a entrada foi modificada. Ex.:
      <updated>05-01-2006 02:56:00</updated>
    

Neste parte ainda cabem os elementos link e author que funcionam da mesma forma que no cabeçalho e como já foi dito, salvo que eles fazem referencia ao artigo e não ao Feed.

Uma entrada interessante é a:

Source, ela, a entrada, é usada para se referir a documentos copiados de outros Sites, assim seria como se falássemos que a fonte foi de outro local. Ex.:

  <source>
  <id>http://example.org/</id>
  <title>Fourty-Two</title>
  <updated>2003-12-13T18:30:02Z</updated>
  <rights>© 2005 Example, Inc.</rights>
  </source>

Exemplo de feed

  <?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>2006-01-05 3:05:47</updated>
  
  <author>
  <name>Roberson Carlos Fox</name>
  <email>robersonfox@genovaengine.com</email>
  <uri>http://www.genova.einet.com.br/about-me</uri>
  </author>
  
  <id>http://www.genova.einet.com.br</id>
  <icon>http://www.genova.einet.com.br/img/genova.ico</icon>
  <logo>http://www.genova.einet.com.br/img/G3.jpg</logo>
  <rights> © 2002-2006 Roberson Carlos Fox </rights>
  <subtitle>Esteja atualizado com o que há de melhor na web</subtitle>
  <category term=Informática/>
  
  <entry>
  <title>Título do artigo1</title>
  <link href=http://www.genova.einet.com.br/artigos.php?id=46/>
  <id>http://www.genova.einet.com.br/artigos.php?id=46/</id>
  <updated>05-01-2006 02:56:00</updated>
  <summary>Descrição do artigo1</summary>
  <author>
  <name>Roberson Carlos Fox</name>
  </author>
  </entry>
  
  <entry>
  <title>Título do artigo2</title>
  <link href=http://www.genova.einet.com.br/artigos.php?id=47/>
  <id>http://www.genova.einet.com.br/artigos.php?id=47/</id>
  <updated>06-01-2006 01:36:00</updated>
  <summary>Descrição do artigo2</summary>
  <author>
  <name>Roberson Carlos Fox</name>
  </author>
  </entry>
  
  </feed>

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
  header("Content-Type: text/xml");
  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>robersonfox@genovaengine.com</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.

Veja a relação completa dos artigos de Roberson Carlos Fox

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.04/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (462 votos)

Opinião dos Leitores

robersonfox
03 Dez 2008, 14:57
O arquivo deve ser salvo em formato PHP
César Fontenele
20 Nov 2007, 11:43
Como faço para criar esse feed autenticado? Tem como?
araujo
17 Mai 2007, 19:18
Eu havia conseguido fazer funcionar. Grato.
robersonfox
16 Mai 2007, 18:22
Use:

/rss/index.php
rafael bernard araújo
25 Ago 2006, 20:18
Eu salvo esse exemplo de criação automática como .xml ou como .php? Eu salvei como .xml e houve o retorno do erro:

Erro no processamento de XML: unclosed token
Posição: http://www.oraclebr.com.br/rss/teste.xml
Número da linha 58, Coluna 16: echo "</feed>";
?>
---------------^
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

English for Reading and Listening
Enriqueça o seu vocabulário recebendo diariamente mensagens divertidas em inglês, com áudio em MP3.
Saiba mais

Biblioteca

Desenvolvendo Websites com PHP
Por Juliano Niederauer

O Monge e o Executivo: uma História sobre a Essência da Liderança
Por James C. Hunter

Extreme Programming
Por Vinicius Manhaes Teles

UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson

O Vendedor de Sonhos
Por Augusto Cury

Segurança de Redes em Ambientes Cooperativos
Por Emilio Tissato Nakamura e Paulo Licio de Geus

O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti

Utilizando UML e Padrões
Por CRAIG LARMAN

Sistema de Banco de Dados
Por Abraham Silberschatz

Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto

Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder

Redes de Computadores e a Internet
Por James F. Kurose e Keith W. Ross

O Segredo
Por Rhonda Byrne

Os Segredos da Mente Milionária
Por T. Harv Eker

Construindo Sites com CSS e (X)HTML
Por Mauricio Samy Silva

Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates

Expressões Regulares: Uma Abordagem Divertida
Por Aurélio Marinho Jargas

Qualidade de Software
Por Andre Koscianski Michel dos Santos Soares

Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho

Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson