Em tudo o que se segue, considera-se que o fluxo de sindicação oferecido pelo site originário é suficientemente rico para prever todas as possibilidades que o template dist/backend.html do SPIP oferece.
Referenciamento rápido do site
À partida, identifica-se no site de origem o URL do seu fluxo de sindicação no formato RSS (ou Atom). Segundo o caso, este endereço pode estar indicado diretamente na página, e/ou ser «descoberto» automaticamente pelo navegador, que então exibe um ícone característico. Se os templates do site fonte permitirem, o SPIP pode também descobrir esse endereço de sindicação, e basta informar o endereço do site, para que seja proposta a sua sindicação.
Uma vez a sindicação ativada, as matérias presentes no fluxo de sindicação do site fonte são recebidos no site receptor.
Decidir o que se quer emitir
O webmaster do site fonte pode decidir o que incluir no seu fluxo RSS: esta escolha pode fazer-se evidentemente ao se modificar o template dist/backend.html, ou inspirar-se nele para criar um novo fluxo.
Mas a página de configuração na área restrita oferece uma opção bem importante para a sindicação: permite decidir se o fluxo RSS do site incluirá a íntegra do conteúdo das matérias, no formato HTML, ou apenas um pequeno resumo (no formato texto). No primeiro caso (que é a configuração padrão do sistema), as matérias recentes do site são inteiramente legíveis com um leitor RSS: são também inteiramente «copiáveis» de um site para outro. Isto permite, por exemplo, realizar automaticamente sites espelhados, ou sites compostos por conteúdos produzidos por outros sites.
Decidir o que se quer recuperar
Se o site fonte não difunde o seu conteúdo integral, é evidente que a sindicação não poderá recuperá-lo mais. Mas, no caso de uma difusão integral, o SPIP pode recuperar esse conteúdo HTML e exibí-lo, incluindo as imagens.
Site a site, pode-se escolher o que se quer recuperar com a sindicação: o conteúdo HTML das matérias (proveniente da entrada <content>
do fluxo RSS, se ela estiver presente) ou um simples resumo em formato texto (encontrado na entrada <description>
ou <summary>
do fluxo rss).
Pode-se igualmente decidir o que fazer com as matérias que desaparencem do s fluxos (que são, em geral, limitados às 15 matérias mais recentes do site): pode-se decidir que o SPIP as elimine da base de dados (após um período de dois meses), e/ou passá-las imediatamente para o modo «recusada». Estas últimas opções permitem, por exemplo, gerir um portal baseado em fluxos muito rápidos (agências de notícias, tags muito populares de sites de fotografia etc.); ou ainda manter um espelho fiel de um site (eliminando as matérias que sejam despublicadas).
O SPIP considera que, se a data de um elemento do fluxo RSS é «muito velha» (mais de um ano) ou muito longe no futuro (mais de 48 horas), trata-se provavelmente de um erro. Ele insere, então, a data do dia no lugar da que encontrou. Pode-se, no entanto, precisar de sindicar as informações que, intencionalmente, fornecem uma data situada a mais de dois dias no futuro. Por exemplo, os fluxos RSS podem ser usados para anunciar eventos que terão lugar posteriormente.
Para sindicar esses eventos via fluxo RSS dedicado, há uma variável de personalização chamada $controler_dates_rss
, com valor verdadeiro por padrão.
Para tal, no seu ficheiro config/mes_options.php
, inclua a linha
$GLOBALS['controler_dates_rss'] = false;
o teste deixa de ser realizado e as datas futuras, ou do «longínquo» passado, serão consideradas.
Decidir o que se quer exibir
O loop SITES permite percorrer os sites sindicados, enquanto que o loop SYNDIC_ARTICLES permite recuperar os campos de descrição das matérias fornecidas por um dos sites sindicados.
- a source:
De nodo habitual, #NOM_SITE
representa o nome do site sindicado, que é a «fonte» da matéria. No entanto, com o desenvolvimento dos agregadores de conteúdo (portais, por exemplo), a verdaderia fonte da matéria pode ser outro site. O formato RSS previu este caso, definindo um campo <source>
para indicar a fonte original da matéria. O motor de sindicação do SPIP recupera esses dados quando estiverem presentes, e as tags #SOURCE
e #URL_SOURCE
permitem exibir respectivamente o nome e o endereço da fonte.
- as tags:
Se as palavras-chave atribuídas às matérias estiverem corretamente informadas no fluxo RSS, serão recuperadas pelo site receptor; elas não chegam individuaolmente na tabela de palavras-chave, mas são armazenadas de forma agregada no campo tags
da tabela spip_syndic_articles
.
Se o fluxo de sindicação usa a notação padrão <dc:subject>Tag</dc:subject>
, a tag é notada como tal. O SPIP leva essa notação um pouco mais além transmitindo também o endereço da página da palavra-chave, graças aos microformatos. A tag é então recuperada com o seu link, na forma:
<a rel="tag" href="endereço da página da palavra-chave">Palavra-chave</a>
.
No site destinatário, essas tags são exibidas na área restrita abaixo da descrição da matéria, e são exibíveis no site público graças à tag #TAGS
(veremos mais à frente como filtrá-la para fazer uma exibição seletiva das tags).
Nota: O SPIP prevê uma gestão específica das tags provenientes do site flickr (fotografia) de modo a poder atribuir-lhes um URL que não está previsto no seu fluxo RSS.
- a seção:
Em diversas aplicações (sistemas de blogs, diretórios de links...) a categoria (ou ainda diretório) de uma matéria é o equivalente ao que no SPIP se chama a seção. É assim natural usar a notação padrão de <category>...</category>
do RSS para dar a conhecer a qual seção pertence a nossa matéria.
Igualmente como para as tags, o SPIP recupera essa informação e a exibe via #TAGS
.
- os documentos anexos:
Os documentos que, na área restrita, figuram no fundo da página de visualização de uma matéria, seja na seção «Documentos», ou, para as imagens, na seção «Portfolio», são também transmitidos no fluxo RSS, usando-se a notação <enclosure ... />
. É o que se chama de posdcasting, uma função padrão do SPIP [1].
A informação sobre enclosures é também recuperada na tag #TAGS
, mas é exibida de maneira diferenciada na área restrita, na forma de um pequeno clipe para cada ficheiro.
Como visto acima, a tag #TAGS
exibe agregadamente os links para as palavras-chave, a seção e os documentos anexos. Mas graças aos microformatos, os links para cada um destes conceitos são «marcados» da maneira abaixo:
- <a rel="tag" ...>
para as tags/palavras-chave
- <a rel="directory" ...>
para a seção/categoria
- <a rel="enclosure" ...>
para os documentos anexos/podcast
Se só quiser exibir um destes tipos de tags, usa-se o filtro afficher_tags
especificando-se o tipo desejado como argumento:
[(#TAGS|afficher_tags{directory})]
[(#TAGS|afficher_tags{tag})]
[(#TAGS|afficher_tags{enclosure})]
Por padrão [(#TAGS|afficher_tags)]
é equivalente a [(#TAGS|afficher_tags{'tag,directory'})]
.
Para os documentos anexos, o filtro específico afficher_enclosures
permite exibir os clipes, bem como os links clássicos:
[(#TAGS|afficher_enclosures)]
Manipular o conteúdo HTML das matérias sindicadas
Caso prático: o nosso site sindica um fotoblog, que difunde sistematicamente um pequeno comentário seguido da fotografia. Esta última apresenta-se na forma de uma tag HTML <img .../>
. Uma vez o fotoblog sindicado em versão HTML completa no nosso site, podemos decidir exibir apenas a foto sem o comentário. Precisamos então extrair a tag <img />
; isto pode ser feito com o filtro extraire_balise{xxx}
, que recupera a primeira tag HTML <xxx />
de um conteúdo.
A partir daí, é possível:
[(#DESCRIPTIF|extraire_balise{img})]
…exibe a foto;
[(#DESCRIPTIF|extraire_balise{img}|extraire_attribut{src})]
…o seu URL;
[(#DESCRIPTIF|extraire_balise{img}|extraire_attribut{width})]
…a sua largura;
Pode-se mesmo alterar o estilo com, por exemplo:
[(#DESCRIPTIF|extraire_balise{img}|inserer_attribut{style,'border: double red 4px;'})]
Nota: os conteúdos HTML provenientes de um site externo são, por definição, considerados como «não controlados», e portanto potencialmente problemáticos, caso contenham tags mal fechadas, ou javascript; o SPIP aplica-lhes sistematicamente o filtro
safehtml
antes da exibição.
Outros filtros ligados à sindicação
Estes filtros permitem converter as tags de sindicação de um formato a outro, para permitir, por exemplo.. remeter ao formato RSS as «tags» recuperadas por sindicação, e armazenadas na nossa base de dados na forma de microformatos: tags2dcsubject
, enclosure2microformat
, microformat2enclosure
.