A utilização de RSS Feeds em CMS como WordPress, Joomla ou Drupal é feita de forma nativa e automática pelo próprio sistema, não necessitando de qualquer tipo de programação por parte dos seus proprietários para que funcione. RSS (originalmente RDF Site Summary, muitas vezes apelidado de Really Simple Syndication) é uma família de formatos de Web feeds usado para publicar conteúdos atualizados com frequência, tais como entradas de blog, notícias, áudio e vídeo em um formato padrão. Um documento RSS (que é vulgarmente chamado de feed) inclui além do conteúdo completa ou resumido, a data de publicação e o seu autor. Os Feeds RSS beneficiam os autores de conteúdo por permitirem distribuir o seu conteúdo automaticamente, para os visitantes que subscrevam o feed. A sua versatilidade permite que um feed possa ser lido em variadíssimas plataformas ou programas, deixando ao critério do leitor essa escolha. Os feed RSS permitem aos usuários evitar a visita manual a todos os sites que eles estão interessados para procurar novos conteúdos, subscrevendo os mesmo estando assim sempre atualizados com os novos conteúdos.
No entanto, nem todas as pessoas utilizam CMS, cingindo-se à utilização de websites estáticos em HTML ou PHP, que não têm um sistema de feed RSS nativo, logo não existe possibilidade de tirar partido de um feed RSS, nomeadamente angariar subscritores e fazer chegar os seus conteúdos aos e-mails dos leitores, para que possam lê-los confortavelmente no seu leitor de feeds preferido. Assim, neste artigo Desenvolvendo um feed RSS de raiz para o seu site estático vamos-lhe ensinar como criar um feed RSS de raiz para os seus websites. Está preparado?

1. ELEMENTOS XML E RSS
Utilizando o seu editor de código preferido, crie um novo documento em branco ou pré-formatado para XML e insira os códigos relativos à declaração de ambos os elementos. De notar que a declaração relativamente ao XML tem de ser a primeira linha.
<?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"></rss>
2. ELEMENTO CHANNEL
O elemento <channel> é onde vão ser inseridas informações sobre o site relativo ao feed, alguns elementos importantes para o feedm onde irão ser inseridas as entradas do feed e ainda é onde iremos inserir a descrição do mesmo . Este elemento é inserido dentro da tag <rss> que criámos acima:
<channel> <title>Escola Criatividade</title> <atom:link href="http://www.escolacriatividade.com/feed/" rel="self" type="application/rss+xml"/> <description>RSS Feed da Escola Criatividade</description> <link>http://www.escolacriatividade.com</link> </channel>
Embora seja um tanto ou quanto perceptível, vamos explicar o que cada item é. <title> é otítulo do feed, normalmente o mesmo título utilizado pelo website. A introdução do elemento <atom> deriva do facto de que de acordo com um conjunto de boas práticas aconselhadas pelo RSS Advisory Board, identificar o URL de um feed no próprio feed torna-o mais portável, auto-suficiente, e mais fácil de armazenar em cache. Assim, é aconselhável introduzir este elemento. <description> é a descrição do feed e / ou do website. <link> é o link do website do feed.
3. ELEMENTO ITEM
Como referimos acima, as entradas do feed são inseridas dentro do elemento <channel>, e isso é feito através do elemento <item>. Cada elemento <item> é uma entrada no feed. Embora o objectivo do feed seja ter conteúdo, não é obrigatório encher o feed com entradas, para funcionar basta introduzir pelo menos um item. Desta forma, introduza um item utilizando o seguinte código, dentro da tag <channel>:
<item>
<title>Criando diferentes tipos de tipografia com CSS3</title>
<description>Aprenda como criar diferentes tipos de tipografia com CSS3. Crie efeitos tipográficos incríveis com CSS3, como se tivessem sido criados em Photoshop.</description>
<link>http://www.escolacriatividade.com/criando-diferentes-tipos-de-tipografia-com-css3/</link>
<guid>http://www.escolacriatividade.com/criando-diferentes-tipos-de-tipografia-com-css3/</guid>
<pubDate>Tue, 15 May 2012 16:19:31 +0000</pubDate>
<author>Diogo Espinha</author>
</item>
No caso do elemento <item> existem alguns pontos a serem explicados, nomeadamente o <guid>, o <pubdate> e o <author> que ainda não tinham sido apresentados anteriormente. o <guid> é um elemento que é recomendável introduzir e, se possível torná-lo um permalink. Isso permite que os agregadores não repitam itens, mesmo que não sejam alterações ao nível da edição de conteúdo.
Normalmente as pessoas olham para o código e perguntam-se se o <link> e o <guid> são o mesmo. Sim, em alguns sistemas de gestão conteúdo, e não em outros. Em alguns desses sistemas, <link> é um permalink para um item. No entanto, em outros sistemas cada <item> é uma sinopse de um artigo mais longo, e aí o <link> linka para o artigo, e <guid> é o permalink para o post do blog. <pubdate> é opcional, e é a data de publicação do conteúdo. <author> também é opcional e identifica o autor do conteúdo.
4. TORNAR O FEED DINÂMICO
Se você ten imensas entradas no seu website que gostaria de incluir no feed, certamente estará a pensar em como fazer isso automaticamente. É de facto uma boa ideia… caso você utilize um banco de dados.
Se por outro lado você não utiliza banco de dados e tem pouco conteúdo para introduzir no feed, sugiro que faça a introdução manualmente seguindo os procedimentos que lhe indicámos nos pontos acima. Caso você utilize banco de dados e ache que é justificável tornar o seu feed dinâmico, o colega Rich do That Blog facultou um código de sua autoria que permite que você consiga buscar os dados da base de dados e criar o seu feed dinâmico. Aqui fica o código:
<?
// Begin Function
function createRSSFile($post_title,$post_description,$post_link)
{
$returnITEM = "<item>\n";
# this will return the Title of the Article.
$returnITEM .= "<title>".$post_title."</title>\n";
# this will return the Description of the Article.
$returnITEM .= "<description>".$post_description."</description>\n";
# this will return the URL to the post.
$returnITEM .= "<link>".$post_link."</link>\n";
$returnITEM .= "</item>\n";
return $returnITEM;
}
// Lets build the page
$filename = "http://www.YOURSITE.com/feeds/index.xml";
$rootURL = "http://www.YOURSITE.com/feeds/";
$latestBuild = date("r");
// Lets define the the type of doc we're creating.
$createXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
$createXML .= "<rss version=\"0.92\">\n";
$createXML .= "<channel>
<title>TITLE_OF_YOUR_RSS_FEED</title>
<link>$rootURL</link>
<description>DESCRIPTION_OF_YOUR_FEED</description>
<lastBuildDate>$latestBuild</lastBuildDate>
<docs>http://backend.userland.com/rss092</docs>
<language>en</language>
";
// Lets Get the News Articles
$content_search = "SELECT title, description, seoTitle, timeStamp FROM articles ORDER BY articleTimeStamp DESC";
$content_results = mysql_query($content_search);
// Lets get the results
while ($articleInfo = mysql_fetch_object($content_results))
{
$page = $rootURL."$articleInfo->articleSEOTitle.html";
$description = "$articleInfo->articleDescription";
$title = "$articleInfo->articleTitle";
$createXML .= createRSSFile($title,$description,$page);
}
$createXML .= "</channel>\n </rss>";
// Finish it up
$filehandle = fopen($filename,"w") or die("Can't open the file");
fwrite($filehandle,$createXML);
fclose($filehandle);
//echo "XML Sitemap updated!";
?>
Em alternativa poderá fazer o download do ficheiro aqui. Para utilizar este código terá de ter alguns conhecimentos ao nível do PHP e MySQL, para fazer as correctas ligações à base de dados. Mais uma vez salientamos que este código não é da nossa autoria, remetendo todas as responsabilidades do mesmo para o seu autor.
Abraço!
























Joana
Os artigos da Escola Criatividade estão a ficar cada vez melhores. Muito interessante este artigo, parabéns Diogo!
Diogo Espinha
Olá Joana, obrigado pelas suas palavras, são um incentivo e é extremamente motivador! Estamos a trabalhar para continuar a melhorar os nossos conteúdos e levar o melhor aos nossos leitores :)
Cumprimentos
Almir Rivas
Parabéns Diogo, artigos bem escritos e extremamente útil.
Diogo Espinha
Muito obrigado Almir Rivas, espero vê-lo mais vezes a comentar os nossos artigos :)
Abraço!
mestre dos sites
Parabens pelo artigo!
Pouca gente realmente sabe o poder do feed do seu blog :o)
Diogo Espinha
Olá Mestre dos Sites, obrigado pela sua visita e comentário! De facto ter um feed é importante, como salientámos no artigo :)
Abraço!