Programmare la gestione dei trackback sul proprio blog
Il trackback è un sistema introdotto da Movable Type per consentire il collegamento tra post di blog differenti. Questa tecnica di cross-posting ha messo in comunicazione tra loro tutti i blog che supportano tale funzionalità, contribuendo alla crescita esponenziale che questo strumento di self publishing ha avuto in questi anni.
Photo credit: Maurice Schadee
Il meccanismo è semplice; tutti i blog che accettano "risposte" ai propri post anche da blog esterni, forniscono un identificativo unico per ogni post chiamato URL di trackback.
Quando un utente posta sul proprio in risposta o in riferimento ad una notizia letta da qualche altra parte, lo farà includendo nel post l’URL di trackback della notizia di riferimento. Sui due blog quindi gli interventi saranno linkati reciprocamente; su uno apparira l’url di trackback (qualcosa simile a "sto parlando dell’articolo letto qui") e sull’altro la notifica di risposta (simile a "hey, qualcuno mi ha risposto a questo indirizzo).
La procedura di trackback pertanto avviene in due step:
- Un blog che "chiama" e notifica un commento. La chiamata si chiama "Ping".
- Un blog che risponde alla chiamata comunicando se il commento è stato rilevata o meno.
Moltissime piattaforme hanno la gestione dei trackback integrata per default, ma in rete esistono molti sistemi informativi custom sviluppati ad hoc (come ikaro.net). Per questi sistemi pertanto la gestione dei trackback va sviluppata manulmente.
Sono due le funzionalità che si possono implementare su un sistema di self publishing custom. Si puà abilitare il sistema a:
- accettare risposte su blog esterni (ricevere ping)
- rispondere a blog esterni (inviare ping)
L’url di trackback
Occupiamoci per ora di mettere in ascolto il nostro blog per rilevare se da qualche parte in rete si fa riferimento a notizie o articoli apparsi nostro sito. Gestiamo pertanto le richieste di ping. Tecnicamente il ping è una chiamata ad uno script con metodo POST, con la quale si inviano variabili sia POST che GET. Questo script costituirà l’URL di trackback.
Il flusso dati dello script è il seguente:
- Ricezione del ping con i dati inviati tramite metodo POST
- Verifica dei dati, se non corretti invia responso negativo in formato XML ed esce
- Se corretti, elabora i dati. Se l’elaborazione non riesce invia responso negativo in formato XML ed esce
- Iniva responso positivo in formato XML.
Specifiche dei dati
Vediamo i nomi dei parametri inviati dai ping che il nostro script deve gestire;
- MEDOTO GET
- ID univoco del nostro post, al quale il chiamante sta rispondendo – obbligatorio
- METODO POST
- url | l’URL univoco che contiene la risposta al post – obbligatorio
- blog_name | il nome del blog esterno – facoltativo
- title | il titolo della risposta – facoltativo
- excerpt | il testo della risposta – facoltativo
Specifiche delle risposte
I responsi ai ping, sia positivi che negativi, devono essere inviati in formato XML. Lo script pertanto deve inviale l’header appropriato ("Content-Type: text/xml") prima di ogni eventuale output del sorgente.
Responso esito positivo:
<?xml version="1.0" encoding="utf-8"?>
<response>
<error>0</error>
</response>
Responso esito negativo
< ?xml version="1.0" encoding="utf-8"?>
<response>
<error>1</error>
<message>Messaggio di errore</message>
</response>
Come abbiamo visto nelle specifiche dei parametri, le uniche due variabili obbligatorie sono l’ID inviato con il metodo GET e il campo "url" che identifica il post chiamante.
Scheletro di esempio
Mostriamo pertanto un valido schema di script ampliando un pò lo schema dello script;
- Controllo se il campo HTTP_GET_VARS[‘id’] e HTTP_POST_VARS[‘url’] siano validi
- Se non sono validi invio il responso negativo (vedi sopra) in formato XML
- Se sono validi, salvo la risposta contenuta nelle variabili POST blog_name, title, excerpt e la collego al post appropriato tramite HTTP_GET_VARS[‘id’]
- Se il salvataggio non è andato a buon fine, invio esito negativo con formato XML
- Se il salvataggio è avvenuto, invio finalmente esito positivo con XML
Il punto 3 è strettamente dipendente da come il sistema informativo gestisce i dati. Se le indormazioni vengono memorizzate su una base dati dovranno essere inseriti nella tabella delle risposte indicando come chiave l’ID del post di riferimento inviato con il metodo GET.
Se le risposte vengono gestite invece su files XML o su file di testo ASCII, dovranno essere memorizzate con le specifiche del sistema informativo in uso.
URL di trackback
Una volta sviluppato e salvato da qualche parte lo script, questo servirà per fornire l’ULR di trackback relativo ad ogni post del vostro blog. Supponiamo che lo script abbia l’URL http://vostro.blog.it/cgi/trackback.cgi, l’URL di trackback da fornire ai vostri visitatori per l’articolo con id=452 sarà ad esempio: http://vostro.blog.it/cgi/trackback.cgi?id=452
Schema di sorgente da modificare
Segue lo shot di uno scheletro di sorgente php modificabile in base alle proprie esigenze.
ma perchè il trackbar non funziona???