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?

rss feed

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!

 

Autor: Diogo Espinha

Blog do Autor | Artigos do Autor:

Workaholic e totalmente viciado em computadores, Internet e desporto motorizado. Adora praticar desporto, é um curioso da programação em PHP, CSS e HTML5 e não dispensa a companhia do seu Mac OSX 86 Snow Leopard!

  • Explorer - Factory Construction & Ship Building Joomla Theme
  • Justice - Attorney and Law Firm Joomla Template
  • OwnFolio - One Page Personal Portfolio / vCard / Resume / Showcase Joomla Template
  • Big Business - Responsive Template
  • Merab - Creative Multipurpose Drupal 8 Theme
  • Fitness Academy Joomla Template
  • Fruition - Business Joomla Template
  • Educate | Education & Courses, Kindergartens Joomla Template
  • Constructive - Contractors Multipurpose Joomla Landing Page Theme
  • Vina Bubox - VirtueMart Joomla Template for Online Stores
  • BizOne - One Page Parallax Drupal Theme
  • LawHouse - Responsive Lawyers Attorneys Joomla Template

Gostou deste artigo? Então torne-se fã do Blog no Facebook!



Comentários dos Alunos


  1. Joana
    16 de maio de 2012

    Os artigos da Escola Criatividade estão a ficar cada vez melhores. Muito interessante este artigo, parabéns Diogo!



    • Diogo Espinha
      17 de maio de 2012

      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



  2. Almir Rivas
    17 de maio de 2012

    Parabéns Diogo, artigos bem escritos e extremamente útil.



    • Diogo Espinha
      18 de maio de 2012

      Muito obrigado Almir Rivas, espero vê-lo mais vezes a comentar os nossos artigos :)

      Abraço!



  3. mestre dos sites
    17 de maio de 2012

    Parabens pelo artigo!

    Pouca gente realmente sabe o poder do feed do seu blog :o)



    • Diogo Espinha
      18 de maio de 2012

      Olá Mestre dos Sites, obrigado pela sua visita e comentário! De facto ter um feed é importante, como salientámos no artigo :)

      Abraço!


RSS
Twitter
Facebook
Comentários
ASSINANTES
SEGUIDORES
FÃS
COMENTÁRIOS
7794

Subscrever Newsletter
Subscreva a Newsletter:



Aplicativos Android, iPhone e Muito Mais!




Assine a Escola Criatividade Assine a Newsletter da Escola Criatividade Escola Criatividade no Twitter Escola Criatividade no Facebook Escola Criatividade no Youtube Escola Criatividade no Google Buzz