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.
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.
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
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
(379 votos)
Opinião dos Leitores
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>";
?>
---------------^