Spip trackback

Warning : ce plugin est un des tous premiers plugins spip que j'ai écrit, et je ne suis pas revenu dessus depuis. Le code n'est donc pas forcément un modèle du genre... Voilà, vous êtes prévenus.

Introduction

Ce plugin propose une implémentation partielle du protocole trackback (en français : "rétroliens") pour spip 1.9.2.

Actuellement, seule la partie "réception" du protocole trackback est implémentée. En clair, une fois le plugin installé (et vos squelettes modifiés en conséquence), votre site pourra:

  • afficher l'url d'auto-découverte
  • recevoir des "pings"
  • afficher les rétroliens reçus (et acceptés) pour un article

Pré-requis

  • spip 1.9.2 (pas testé avec d'autres versions)
  • allow_url_fopen dans le php.ini (pour le filtre anti-sping)

Installation

Comme pour n'importe quel plugin spip:

  • copiez le code du plugin dans votre répertoire plugin
  • activez le plugin depuis l'interface d'admin

La boucle TRACKBACKS

boucle_n(TRACKBACKS){critères...}

Cette boucle permet d'afficher les rétroliens pour tous le site ou pour un article donné. Par défaut, seuls les trackbacks validés sont affichés.

Critères de sélection

Le critère principal est {id_article} (affiche les trackbacks pour l'article id_article - soit celui extrait du contexte, soit passé explicitement). On peut bien sûr utiliser les critères de recherche habituels sur les autres champs

Champs

Ces champs sont, comme d'habitude, disponibles dans les squelettes sous forme de balises.

  • id_trackback
  • id_article
  • url_blog (url de la page sur laquelle pointe le trackback)
  • nom_blog (nom du site ayant émis le trackback),
  • titre (soumis avec le rétrolien)
  • texte (idem)
  • statut (voir les statuts FORUM),
  • date_heure (...de réception du trackback)

Autres balises

  • #PARAMETRES_TRACKBACK
    cf la balise #PARAMETRES_FORUM de spip. Détermine si un article accepte les trackbacks.
  • #URL_TRACKBACK
    retourne l'url de trackback pour un article (l'url à laquelle l'émetteur doit poster pour soumettre un rétrolien).
  • #LINK_TRACKBACK
    retourne le lien (balise HTML link) vers l'url de trackback pour un article.
    <link rel="trackback" type="application/x-www-form-urlencoded" href="$url_trackback_article" />
  • #RDF_TRACKBACK
    retourne le snippet rdf pour l'autodécouverte de l'url de trackback.

Utilisation

Dans les squelettes

Les trackbacks étant liés à un article, le cas d'utilisation le plus courant consiste à
  1. insérer le lien trackback et/ou le RDF d'autodécouverte dans l'entête du squelette article et
  2. afficher les trackbacks reçus dans le corps du squelette.

Le premier point se règle en utilisant les balises adéquate dans la section head du squelette article :

<BOUCLE_article_principal(ARTICLES) {id_article}>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html dir="#LANG_DIR" lang="#LANG">
<head>

... vos entêtes habituels ici ...

[(#REM) lien et rdf trackback - si l'article les accepte]
[(#PARAMETRE_TRACKBACK)
  #LINK_TRACKBACK

  #RDF_TRACKBACK
]
</head>

Pour le second, on utilise la boucle TRACKBACKS :

<body>

... votre page ici

[(#REM) trackbacks de l'article ]
[(#PARAMETRES_TRACKBACK)
<hr />
<div>
  <a href="#trackbacks" name="trackbacks" id="trackbacks"></a>
  <h2><a href="#URL_TRACKBACK")"><:trackbacks_article:></a></h2>
  <BOUCLE_trackbacks(TRACKBACKS){id_article}>
  <div class='trackback'>
    <a href="#URL_BLOG">#NOM_BLOG</a> - [(#DATE_HEURE|affdate)]<br />
    <h3>#TITRE</h3>
    [<p>(#TEXTE|safehtml)</p>]
  </div>
  </BOUCLE_trackbacks>
</div>

... etc...

</body>
</html>
</BOUCLE_article_principal>

Dans le back-office

La modération fonctionne globalement comme pour les forums. Une interface centralisée permet de modérer les rétroliens reçus pour tout le site, et il est possible pour chaque article de sélectionner le type de modération (a priori, a posteriori, pas de rétroliens), et d'accéder à l'interface de modération pour les rétroliens spécifiques à cet article.

NB : le plugin contient déjà un filtre 'anti-sping' simple (à défaut d'être parfait), qui recherche dans la page passée par l'émetteur du ping l'url de la page réceptrice, et modère automatiquement le ping si cette url n'est pas trouvée.

Todo

  • La partie "émission" reste à implémenter,
  • ...mais un port vers spip 2.0 serait plus urgent.
  • Proposer une (ou plusieurs) alternative(s) si allow_url_fopen = 0
  • Implémenter une gestion correcte des urls propres (filtre anti-sping)
  • Gérer correctement les permissions
  • définir date_heure comme champ DATE (au sens spip)

Références

La spécification du protocole Trackback