Wikisource:Backlinks

Da Wikisource.

Per "backlink" intendiamo un "link che torna indietro" ossia che riporta esattamente nel punto da cui si è partiti, seguendo un link, dopo aver raggiunto il "bersaglio".

I browser hanno due meccanismi per "tornare indietro": uno è basato sulla cronologia di navigazione, ossia sull'elenco ordinato delle pagine visitate, che si attiva con il tasto "back" del browser; il secondo è quello dei segnalibri, che consente di memorizzare la pagina corrente in modo stabile, per poterla raggiungere di nuovo a distanza di tempo.

Nessuno dei due meccanismi di ritorno però evidenzia esattamente il punto di partenza (il link) da cui si è partiti; si è solo in grado di ritornare alla pagina da cui si proviene, o alla pagina memorizzata in segnalibri; non è facile ritrovare il punto esatto da cui ci si è spostati. Il meccanismo dei backlinks di it.source, invece, consente non solo di ritornare esattamente nel punto chiamante della pagina, ma pure lo evidenzia.

Per provare il meccanismo assicuratevi che sia attivo il gadget backlinks in Preferenze->Accessori e poi andate, per esempio, a Pagina:Dizionario mitologico ad uso di giovanetti.djvu/17. Le parole-backlink sono evidenziate da una tenue sottolineatura punteggiata blu. Cliccate Amaltea, voce Abbondanza. Raggiungerete Pagina:Dizionario mitologico ad uso di giovanetti.djvu/33#Amaltea, e Amaltea sarà evidenziata. Adesso cliccate Amaltea evidenziata: tornerete al link Amaltea di partenza, e lo troverete evidenziato.

Un po' di teoria[modifica]

Siccome l'attuale implementazione dei backlinks usa, di base, il template Ancora: {{§}}, che fa la "magia" di evidenziare il bersaglio d'arrivo raggiunto da un link, il problema è:

  • sistemare nel codice un'ancora "bersaglio"
  • sistemare nel codice un'ancora "link"
  • collegarle in modo che quando si raggiunge l'ancora bersaglio, venga memorizzato l'indirizzo completo dell'ancora link e diventi raggiungibile

La relazione fra le due ancore non è 1:1, ma 1:molti ossia: ciascuna ancora bersaglio può essere raggiunta da molte ancore link. Occorre tornare, volta a volta, da quella chiamante usando il suo url specifico. Secondo problema: l'ancora viene raggiunta, in una pagina, attraverso l'id che è unico. Se due ancore link che puntano alla stessa ancora bersaglio stanno sulla stessa pagina, cosa che può succedere frequentemente nelle pagine lunghe, non possono avere lo stesso id, perchè altrimenti verrebbe sempre raggiunta solo la prima. Quindi, occorre un meccanismo per rendere le ancore link uniche.

Script e template[modifica]

Meccanismo attuale (vedi template §, sezione Uso come backlink)
  • Le ancore bersaglio si marcano con un normale template {{§}} a due parametri che assegna all'ancora una class Citazione.
  • Le ancore link si marcano con un normale template {{§}}, ma a tre parametri; il terzo parametro è il nome pagina+ancora-bersaglio o l'url pagina+ancora+bersaglio, scritto direttamente o ottenuto come risultato di un template. Alle ancore viene assegnata una class Citazione e una class Backlink.

All'apertura di una pagina, il gadget backlink.js:

  • a ogni elemento class Backlink assegna un onclick che con un trucco memorizza url+ancora-link nella cronologia del browser e poi chiama la pagina linkata;
  • a ogni elemento class Citazione, ma non class Backlink, assegna invece un onclick che semplicemente chiama la funzione "pagina indietro" dell'oggetto window.

Quindi: cliccata un'ancora-link, l'url della pagina completo di ancora chiamante viene memorizzato nella cronologia; sia cliccando l'ancora-bersaglio, che cliccando il tasto "indietro" del browser, si ritorna quindi all'ancora-link che - essendo di class Citazione - viene normalmente evidenziata.

Meccanismo alternativo (vedi Utente:Alex brollo/backlink.js)
  • il codice delle ancore bersaglio e link è identico.

All'apertura di una pagina, lo script sperimentale:

  • a ogni elemento class Backlink assegna una funzione bl(), collegata a onclick, che:
    • memorizza url+ancora in localStorage["backlink"];
    • apre la pagina ancora-bersaglio
  • se localStorage["backlink"] esiste, crea un link alla pagina backlink corrente e aggiunge al link un onclick che cancella localStorage["backlink"]. Il click sul link provoca quindi due azioni: l'azzeramento del backlink memorizzato e l'apertura della pagina backlink.

In conclusione: cliccando un'ancora-link se ne memorizza stabilmente l'url e in tutte le pagine successive nello stesso sito sarà visualizzato sempre il link backlink, che scomparirà solo quando verrà cliccato. E' quindi possibile, raggiunta l'ncora bersaglio, navigare per un tempo imprecisato, e percorrere un numero imprecisato di pagine, potendo sempre ritornare al punto di partenza.

Shortcuts[modifica]

Nota
per test sul funzionamento dei vari template può essere usata come sandbox la pagina Pagina:Dizionario mitologico ad uso di giovanetti.djvu/500


Usando il template § a tre parametri, si può fare ciò che si vuole, ma è laborioso e faticoso. Bisogna inserire infatti come terzo parametro il link completo a una pagina+ancora oppure due link completi a due diverse pagine+ancora, dentro un template Pt, in modo che l'ancora-link centri l'ancora-bersaglio sia da nsPagina a nsPagina, sia nella versione transclusa da ns0 a ns0. Una pena che può dissuadere chiunque del giro di una decina di ancore.

Siccome i possibili "bersagli", in un testo, non sono in numero infinito, è possibile usare Modulo:Dati/.... dell'opera per memorizzare stabilmente la relazione ancora->numero di pagina che la contiene e ancora->sezione in ns0 che la contiene. Memorizzata questa relazione, e costruito una funzione Lua che recuperi i due dati da Modulo:Dati/.... e li presenti selettivamente in nsPagina e ns0, allora come terzo parametro del template § basterà passare il nome dell'ancora-bersaglio dentro un template. Il template sperimentale in questione è Lp1 (vedi esempi in pagina test)

La sintassi di un template che all'interno della pagina test crea un backlink alla voce Apollo è quindi:

  • {{§|Apollo4343443|Apollo|{{Lp1|Apollo}}}}

Poichè si vede che in questo caso speciale il nome dell'ancora-link (parametro 1), il testo visualizzato (parametro 2) e il nome dell'ancora-bersaglio (parametro 3) sono identiche (Apollo) e differiscono solo per il testo "unicizzante" accodato al parametro 1, uno shortcut per ottenere lo stesso risultato è il template Bl:

  • {{Bl|Apollo|4343443}}

Nel caso che il testo visualizzato differisca dall'ancora-bersaglio si può forzare passando il testo da visualizzare con il parametro v:

  • {{Bl|Apollo|4343443|v=Apollo il grande}}