|
Como atribuir notícias RSS ao seu site usando ATOM e PHP: msg#02646culture.publications.dicas
Como atribuir notícias RSS ao seu site usando ATOM e PHP ======================================================== Colaboração: Roberson Carlos Fox 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@xxxxxxxxxxxxxxxx</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@xxxxxxxxxxxxxxxx</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@xxxxxxxxxxxxxxxx</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@xxxxxxxxxxxxxxxx</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. |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Instalando e utilizando o Milter-Greylist no Sendmail de distribuições baseadas em RPM: 02646, Rubens Queiroz de Almeida |
|---|---|
| Next by Date: | Google na Dicas-L: 02646, Rubens Queiroz de Almeida |
| Previous by Thread: | Instalando e utilizando o Milter-Greylist no Sendmail de distribuições baseadas em RPMi: 02646, Rubens Queiroz de Almeida |
| Next by Thread: | Como atribuir notícias RSS ao seu site usando ATOM e PHP: 02646, Dicas-L-Owner |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |