08 Nov 2011
Inserito da: Andrea Lanfranchi in: Internet, Programmazione, Seo
Come in un precedente articolo nel quale mi sono occupato della convalida W3c del sito dopo che si è inserita l’implementazione del bottone +1 di Google, anche per il bottone Mi Piace di Facebook è necessario procedere a qualche aggiustamento per poter ottenere una convalida del proprio sito. Queste brevi indicazioni prescindono dall’ottenimento di un codice Applicazione che dovrete comunque richiedere nella sezione Developer di Facebook.
Dunque … cominciamo con lo script principale che Facebook vi chiede di inserire nella pagina. Quello che vi rilasciano inizia così :
1 | <script>(function(d, s, id) { |
Tuttavia questa impostazione non è convalidabile perchè manca l’attributo type. Dovrete quindi modificare la riga in questo modo :
1 | <script type="text/javascript">(function(d, s, id) { |
Per ottimizzare poi l’esecuzione dello script, in modo che non blocchi il render della pagina durante il caricamento, è consigliabile attivare la modalità asincrona aggiungendo una sola riga di codice:
1 2 | js.src = "//connect.facebook.net/it_IT/all.js#xfbml=1&appId=xxxxxxxxxxxxxx"; js.async = true; /* Aggiungere questa */ |
Ora è necessario specificare dove si desidera che vengano emessi i bottoni. A questo proposito Facebook vi fa inserire un elemento div tipo il seguente:
1 | <div class="fb-like" data-href="......" data-layout="standard" data-send="true" data-width="450" data-show-faces="false"></div> |
Questo elemento, così impostato, non può essere validato perchè attributi come data-href, data-send ecc. non sono validi per l’elemento DIV. Il problema è aggirabile facendo in modo che questi elementi siano iniettati nell’html tramite uno script mediante una normale istruzione document.write. A questo punto però dovremo fare attenzione a racchiudere il contenuto da scrivere all’interno di una sezione CDATA perchè per gli script Java il carattere “< ” indica un reindirizzamento. Al termine il codice deve risultare così.
1 2 3 | <script type="text/javascript" language="javascript"> document.write('<div data-href="<?php the_permalink() ?>" data-layout="standard" data-send="true" data-width="450" data-show-faces="false"></div>'); </script> |
Al termine, ancora una volta, avrete la vostra convalida.
4 Commenti
Lio
29-Nov-2011 1Ciao, ho trovato questo articolo dopo avere rovinato tutte le pagine del mio sito precedentemente validate sia per Html e Css. Sto cercando di applicare i tuoi suggerimenti, ma applicata la parte che si riferisce al div Facebook (l’ultima parte) mi scompare tutto.
Ho lasciato una pagina corretta qui http://www.liosite.com/Scrivimi.html per fartela vedere: purtroppo sn scomparsi i bottoni.
Mi puoi spiegare dove sbaglio?
Tks in advance
Andrea Lanfranchi
29-Nov-2011 2Ciao … ho dato un’occhiata e secondo me ci sono un paio di cose da sistemare :
alla riga dove fai il document.write l’attributo data-ref non deve essere racchiuso tra acute.
Il tuo è
data-href="<http://www.facebook.com/pages/Liosite/126638640770961>"
mentre invece dovrebbe essere
data-href="http://www.facebook.com/pages/Liosite/126638640770961"
C’è poi una riga bianca prima dell’apertura di CDATA. Dovresti toglierla.
Da ultimo dovresi mettere attivare la proprietà js.async = true; (vedi il terzo blocco di codice dell’articolo.
Fammi sapere.
Lio
30-Nov-2011 3OK, ci ho provato e riprovato: nulla da fare. La cosa ridicola e’ che se vado nella mia home (www.liosite.com) ho messo gli stessi pulsanti in modo differente (parecchio tempo fa per cui proprio non ricordo come lo feci) e non solo la pagina viene validata regolarmente, ma il modo di porre il codice e’ completamente differente.
Onestamente non capisco nemmeno da dove sia saltato fuori 🙁
Da come scrivo avrai capito che per me script & C. sono cose assolutamente misteriose e sono ormai giorni interi che cerco di risolvere problemi legati a questi dannati bottoni di FB, sia questo sia per quanto riguarda il poterne mettere piu’ di uno per pagina, ma con la possibilita’ di non fare riferimento ai metadata della pagina ma al div in cui viene messo il bottone.
E ovviamente nessuno ne sa nulla …..
Cmq io ho provato a fare le correzioni che mi hai detto, ma i codici sono scomparsi e io non vedo l’errore.
Grazie infinite per il tuo aiuto
Lio
Andrea Lanfranchi
01-Dic-2011 4Ciao Lio,
ci sono delle differenze tra la tua Home (index.html) e la pagina Scrivimi. Quello corretto è nella index.
Ti consiglio di procedere così:
1) apri la index.html e copiati tutto quello che c’è tra
<!-- Facebook Like -->
e<!-- Facebook Like END -->
2) apri la scrivimi.html e cancella tutto quello che c’è tra il rigo
<body>
e il rigo<div id="container">
(i due estremi devono restare)3) ora, subito dopo il rigo
<body>
, incolla tutto quello che hai copiato al punto 1.Salva tutto e riprova. Vedrai che funziona
Categorie
Tag