De syndicatie van inhoud (nieuwsovername)

Met de syndicatie-functionaliteit in SPIP (lees ook artikel «De backend bestanden») kunnen berichten inclusief hun bijlagen (podcasting) worden uitgewisseld, inclusief trefwoorden (tags) die aan die berichten zijn gekoppeld en hun rubriek (of categorie). Daarbij kan worden gekozen voor een verkorte weergave of de volledige inhoud van een artikel.

Natuurlijk kan nieuwsovername niet beter zijn dan de zwakse schakel in het geheel. Alleen als de syndicatiebestanden alle informatie bevatten kan een optimale nieuwsuitwisselng plaasvinden. SPIP zorgt daarvoor met de skeletten dist/backend.html.

Nieuwsovername van een site

We vinden de bron van een site in een RSS (of Atom) feed. Het staat soms op een site aangeven, maar in veel gevallen kan de webbrowser de feed zelf «ontdekken» en geeft het een speciaal symbool aan. Als de te refereren site de juiste broninformatie bevat, kan SPIP deze feed ook ontdekken en geeft hij deze aan in het syndicatieveld. Je hoeft dit dan alleen maar aan te klikken om de nieuwsovername te beginnen.

Beslissen wat je wilt verspreiden

De webmaster van de bronsite beslist wat hij in zijn RSS feeds opneemt: hij kan daarvoor de keuze maken om het bestaande skelet dist/backend.html aan te passen, of zich te laten inspireren om een nieuwe feed op te bouwen.

Maar de configuratie-pagina in het privé gedeelte biedt een belangrijke optie voor de syndicatie: je kunt er aangeven of de RSS-feed de volledige inhoud van een artikel bevat (in HTML-formaat) of slechts een samenvatting (in tekstformaat). In het eerste geval (wat de standaardinstelling van het systeem is) zijn de recente artikelen volledig leesbaar met een feedreader: ze wijn integraal te kopiëren in een andere site. dit maakt automatische spiegeling van sites mogelijk, of een site die gebaseerd is op de inhoud van andere sites.

Besluiten wat je wilt opnemen

Bevat de bron niet de integrale inhoud, dan is het duidelijk dat syndicatie daar niet meer van kan maken. Maar is er wel sprake van een integrale doorgave, dan kan SPIP die HTML ophalen en weergeven, inclusief afbeeldingen.

Per site kan je aangeven wat je met de syndicatie wilt doen: de volledige HTML weergeven (indien beschikbaar) of slechts een samenvatting in tekstformaat.

Je kunt ook beslissen wat moet gebeuren wanneer een bericht uit de feed verdwijnt (meestal zijn het de 15 meest recente): je kunt besluiten dat SPIP we verwijderd uit de database (na 2 maanden), en/of ze onmiddellijk een status «geweigerd» geven. Deze laatste optie is bijvoorbeeld handig bij een portal op zeer snelle feeds (persagentschappen, populaire site tags, enz.); of een getrouwe weerspiegeling van de site aanhouden (door verdwenen artikelen ook te verwijderen).

Wanneer SPIP de datum van een nieuwsitem in een feed beschouwt als «zeer oud» (meer dan één jaar) of te ver in de toekomst (meer dan 48 uur) wordt dat als een fout gezien. In dat geval wordt de huidige datum gebruikt. Toch kan het soms nodig zijn dat een datum meer dan twee dagen in de toekomst ligt, bijvoorbeeld bij een toekomstig evenement.

Of de datulm wordt gecontroleerd, hangt af van de constante $controler_dates_rss, die normaal waar is. Wil je dat veranderen, dan plaats je in je bestand config/mes_options.php een regel met $controler_dates_rss = false;.

Beslissen wat je wilt weergeven

-  de bron:

Zoals gewoonlijk bevat #NOM_SITE de naam van de gesyndiceerde site die dus de «bron» van het artikel is. Toch kan de werkelijke bron een andere site zijn. Het RSS-formaat heeft hiervoor een veld <source> voorzien. Het syndicatiesysteem in SPIP haalt deze gegevens op wanneer ze aanwezig zijn en met de bakens #SOURCE en #URL_SOURCE kunnen respectievelijk de bronsite en haar URL worden weergegeven.

-  de tags:

Worden trefwoorden met betrekking tot artikelen correct in de feed aangegeven, dan zullen ze door de ontvangende site worden verwerkt. Ze komen niet afzonderlijk in de tabel van trefwoorden van de ontvangende site te staan, maar worden "opgestapeld" in het veld tags van de databasetabel spip_syndic_articles.

Gebruikt de feed een standaard notatie <dc:subject>Tag</dc:subject>, dan wordt de tag als zodanig genoteerd. SPIP voert deze notatie iets verder door een geeft ook het adres van de pagina van het trefwoord, door middel van een microformat. De tag wordt als volgt aangegeven: <a rel="tag" href="adres van de pagina van het trefwoord">trefwoord</a>.

Op de ontvangende site worden deze tags in het privé gedeelte onder de beschrijving van het artikel weergegeven en ze kunnen ook op de publieke site worden getoond met het baken #TAGS (verderop lees je hoe je ze selectief kunt filteren).

Let op: SPIP beheert tags afkomstig van de sites del.icio.us (collectieve bookmarks), flickr (fotografie) en connotea (annotatie van wetenschappelijke artikelen) afwijkend door ze een URL toe te wijzen (die niet in de feeds hoeft te staan).

-  de rubriek:

In vele toepassingen (zoals blogs, ...) is de categorie (of directory) van een artikel hetzelfde als wat in SPIP de rubriek wordt genoemd. Het zou dus waarschijnlijk zijn dat SPIP die <category>...</category> notatie zou gebruiken om een gesyndiceerd artikel aan een rubriek toe te wijzen.

Maar net als bij tags haalt SPIP de informatie op en maakt een weergave mogelijk via #TAGS.

-  bijlages:

Documenten die in SPIP aan een artikel worden toegevoegd worden door SPIP ook in de feed doorgestuurd met de notatie <enclosure ... />. Het is wat podcasting genoemd wordt, een standaard functie van SPIP [1].

Ook de informatie uit de enclosures kan met het baken #TAGS worden getoond, maar in het privé gedeelte worden ze met een paperclip apart weergegeven.

Gebruik van het baken #TAGS

Zoals je hebt gelezen bevat het baken #TAGS een pakket links naar trefwoorden, de rubriek en bijlages. Maar dankzij de microformats worden de links naar deze concepten op een speciale wijze «gemarkeerd»:
-  <a rel="tag" ...> voor tags/trefwoorden
-  <a rel="directory" ...> voor de rubriek/categorie
-  <a rel="enclosure" ...> voor bijlages/podcast

Wil je slechts één van deze types weergeven, dan gebruik je het filter afficher_tags en geef je het gevraagde type als argument aan:

[(#TAGS|afficher_tags{directory})]
[(#TAGS|afficher_tags{tag})]
[(#TAGS|afficher_tags{enclosure})]

(Standaard is [(#TAGS|afficher_tags)] gelijk aan [(#TAGS|afficher_tags{'tag,directory'})].)

Voor bijlages maakt het specifieke filter afficher_enclosures het mogelijk paperclips weer te geven in plaats van het klassieke linksymbool:

[(#TAGS|afficher_enclosures)]

* *

De HTML inhoud van gesyndiceerde artikelen manipuleren

Een praktisch voorbeeld: onze site syndiceert een fotoblog, die standaard een klein commentaar stuurt, gevolgd door een foto. De foto wordt gepresenteerd in de vorm van een HTML-tag <img .../>. Wanneer we een volledige HTML syndicatie van die site doen, kunnen we beslissen om uitsluitend de foto te tonen, dus zonder commentaar. We moeten dus de tag <img /> onttrekken, wat we met het filter extraire_balise{xxx} kunnen doen.

Zo is dus van alles mogelijk:
-  [(#DESCRIPTIF|extraire_balise{img})] toont de foto;
-  [(#DESCRIPTIF|extraire_balise{img}|extraire_attribut{src})] de URL van de foto;
-  [(#DESCRIPTIF|extraire_balise{img}|extraire_attribut{width})] de breedte;
-  je zou zelfs de style kunnen aanpassen, bijvoorbeeld:

[(#DESCRIPTIF|extraire_balise{img}|
         inserer_attribut{style,'border: double red 4px;'})]

Let op: de HTML inhoud van een externe site is per definitie «niet gecontroleerd» en kan dus potentieel gevaarlijk zijn door slecht gesloten tags of JavaScript. Daarom pas SPIP systematisch het filter safehtml toe vóór weergave.

Andere filters met betrekking tot syndicatie

Met onderstaande filters kun je van en naar RSS formaat filteren: tags2dcsubject, enclosure2microformat, microformat2enclosure.

Referenties

-  RSS 2.0
-  microformats
-  rel=tag
-  rel=enclosure
-  rel=directory

Voetnoot

[1Let op: de bestanden zelf worden niet meegestuurd, alleen hun URL en bijbehorende gegevens (titel, grootte, formaat). Hier wordt wel vrij met de RSS norm omgegaan, want eigenlijk mag er maar één enclosure bij hetzelfde artikel zijn gevoegd.

Auteur Hanjo Gepubliceerd op: Aangepast: 02/07/23

Vertalingen: عربي, català, English, Español, français, italiano, Nederlands, Türkçe