RSS Syndication · 5 min read · Sep 14, 2025
Syndicação de RSS Fácil com MagpieRSS
Syndicação de RSS Fácil com MagpieRSS
O que é MagpieRSS?
MagpieRSS, carinhosamente conhecido como Magpie, é um parser de RSS e Atom para PHP. Ele permite que você exiba os artigos mais recentes de sites com feeds RSS ou Atom em seu próprio site. Esta é uma ótima maneira de adicionar informações novas, frescas e relevantes ao seu site. Ele analisa RSS 0.9, RSS 1.0 e tem algum suporte para RSS 2.0, bem como Atom 0.3.
O que eu preciso para usar o Magpie?
Para usar o Magpie, seu servidor deve suportar a versão PHP 4.2.0 com suporte a XML, ou PHP5 com suporte a libxml2. Depois disso, configurar e usar o Magpie é muito fácil.
Ok, já ouvi o suficiente, onde eu consigo?
Você pode baixar o Magpie do SourceForge clicando aqui.
E agora?
Basta extrair o arquivo e fazer o upload dos seguintes arquivos para o seu servidor: rss_fetch.inc, rss_parser.inc, rss_cache.inc e rss_utils.inc, além de todo o diretório chamado extlib. Você pode colocar esses arquivos em qualquer diretório na raiz do seu servidor web. Eu costumo enviá-los para um diretório chamado rss.
Em seguida, você precisa decidir onde gostaria que o conteúdo sindicado fosse exibido. Por exemplo, se você quiser sindicar conteúdo no índice de www.example.com, você precisará editar o arquivo index.html(php). Se seu arquivo não terminar em php, você precisará alterá-lo para que termine, pois estaremos adicionando código php a ele.
A seguir, vamos realmente editar o arquivo index.php. Precisamos adicionar o seguinte código ao topo da página onde você deseja exibir os feeds:
Por favor, note que seu caminho pode ser diferente dependendo de como você nomeou o diretório e onde na árvore seu index.php reside. Para realmente adicionar os feeds à sua página, você também precisa adicionar as seguintes linhas para buscar e analisar o RSS:
e substituir o endereço pelo endereço do feed que você deseja exibir.
Isso retornará um array, $rss que inclui o conteúdo sindicado, bem como algumas informações sobre o publicador. As outras informações retornadas (geralmente) são o nome do publicador, armazenado em $rss->channel[‘title’], uma descrição do publicador armazenada em $rss->channel[‘description’], e um link geral para o publicador armazenado em $rss->channel[‘link’].
Os itens podem ser acessados através de $rss->items e um loop simples pode ser usado para percorrer os itens um por um. O código para o loop é:
foreach ($rss->items as $item)
{ // Código para manipular os itens aqui
}Cada item contém um título, link e descrição. $item[‘title’] contém o título do artigo, $item[‘link’] é o link para o original e $item[‘description’] é a descrição da história, que muitas vezes é as primeiras linhas do conteúdo. Uma lista básica do conteúdo sindicado pode ser obtida usando o seguinte código:
channel['link'].">".$rss->channel['title']."";
foreach ($rss->items as $item) {
$href = $item['link'];
$title = $item['title'];
$desc = $item['description'];
echo "
$title
";
if($desc) echo $desc;
}?>
Isso é bem básico, mas você deve ser capaz de personalizá-lo para atender às suas necessidades.
Problemas e Soluções Gerais
O conteúdo sindicado é muito longo para o meu site.
Se o conteúdo que você está sindicando é muito longo ou contém muitos itens e começa a deixar seu site com uma aparência estranha, você pode simplesmente adicionar as seguintes linhas para definir a quantidade de entradas exibidas e definir o comprimento da descrição.
$items = array_slice($rss->items, 0, 5);Esta linha retorna apenas um subconjunto do feed, neste caso, apenas as primeiras 5 entradas. Para encurtar a descrição, você usaria as seguintes linhas:
if (strlen($desc) >= 100)
{
$desc = substr($desc,0,99)."...";
}O que isso faz é verificar se o comprimento da string para a descrição é maior que 100 caracteres, o que, se for, exibirá os primeiros 99 e … depois para avisar o leitor que continua.
Eu gostaria de habilitar o cache dos feeds para reduzir a largura de banda e acelerar o carregamento. Isso é possível?
Com certeza! O Magpie tem o cache habilitado por padrão, mas você provavelmente precisará mudar o diretório para onde ele armazena o cache, além de torná-lo gravável pelo usuário com o qual o servidor é executado. Ele tenta gravar no diretório de trabalho em que o script é chamado. Por exemplo, se você adicionar o feed à sua página inicial, o script tentará criar o diretório de cache na raiz do seu servidor. As seguintes linhas habilitam o cache e definem o diretório onde ele é armazenado:
define('MAGPIE_CACHE_DIR', '/tmp/magpie_cache');
define('MAGPIE_CACHE_ON', 1);Por padrão, o Magpie apenas armazena itens em cache por uma hora, mas isso pode ser alterado com a seguinte linha:
define('MAGPIE_CACHE_AGE', 1800);Isso define o Magpie para armazenar itens em cache por 30 minutos. É importante notar que o intervalo é especificado em segundos.
Ok, eu adicionei essas linhas, mas o cache ainda não está funcionando!
Você precisa ter certeza de que o diretório que você definiu para o cache existe e é gravável pelo usuário com o qual o servidor é executado. No Debian, esse usuário é www-data. Sinto muito, mas não sei qual usuário o apache executa por padrão em outras distribuições. Você pode fazer isso com os seguintes comandos (como root):
mkdir /tmp/magpie_cache
chown www-data:www-data /tmp/magpie_cachePor favor, note que o cache não precisa estar em /tmp e é realmente uma boa ideia mudar se você usar hospedagem compartilhada. Depois disso, atualize a página e você deve ver alguns arquivos com nomes muito estranhos no diretório de cache. Se você fizer tudo isso, está tudo certo. Se não, consulte a FAQ na Página Inicial do MagpieRSS.
Juntando tudo
A seguir está como as opções devem ser combinadas, e é um exemplo funcional com pequenas modificações do meu próprio site.
items, 0, 5);
foreach ($items as $item) {
$href = $item['link'];
$title = $item['title'];
$desc = $item['description'];
echo "
$title
";
if($desc)
if (strlen($desc) >= 125)
{
$desc = substr($desc,0,124)."...";
}
echo $desc;
}
;
?>
Isso recupera o feed de www.digg.com na seção Linux e exibe as primeiras 5 entradas com uma descrição de 125 caracteres de comprimento. Ele também armazena em cache no diretório /var/cache com o tempo de cache padrão de 1 hora.
E aí está, uma sindicação de RSS rápida e fácil com MagpieRSS! Se você precisar de mais informações, ajuda ou qualquer outra coisa, recomendo fortemente que você confira a Página Inicial do MagpieRSS. Eles também têm uma lista de discussão ativa e mantêm arquivos que responderam às minhas perguntas toda vez que precisei de ajuda.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.