21 Lug 2011
Inserito da: Andrea Lanfranchi in: Mondo IT, Programmazione, Seo
Dopo aver aggiornato il mio blog integrandolo con il bottone +1 di Google, mi sono accorto che l’HTML prodotto da WordPress non onorava più la convalida W3C alla quale tanti sviluppatori tengono in modo particolare. Ed in effetti il tag <g:plusone></g:plusone> non viene riconosciuto correttamente in quanto si tratta di una estensione DOM che solo lo script Google gestisce.
Esiste comunque il modo per utilizzare nativamente le API PlusOne in modo che non si debba utilizzare un tag html non riconosciuto. Le cose da osservare sono due: la prima riguarda l’inizializzazione dello script plusone che dovrà obbligatoriamente prevedere il parametro parsetags: explicit come da esempio seguente.
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">; {lang: 'it-IT', parsetags: 'explicit'} </script> |
Questo impedisce allo script di eseguire il render del bottone (o dei bottoni) immediatamente dopo l’evento onLoad della pagina e ci permetterà di specificare via codice quando e dove effettuare il render del bottone. Per chi usa WordPress questo snippet di codice deve essere inserito all’interno dei tag <head></head> che vengono emessi dallo script header.php. A questo punto non resta che decidere dove si vuole che il bottone venga inizializzato e quale sia il riferimento di URL da votare. Riporto di seguito lo snippet che ho inserito nella mia pagina “index.php” che riporta, in sequenza gli ultimi articoli.
<div id="plusone-div<?php the_ID() ?>;"></div>; <script type="text/javascript">; gapi.plusone.render('plusone-div< ?php the_ID() ?>',{"size": "medium", "count": "true", "href": "< ?php the_permalink() ?>"}); </script> |
Come potete vedere, dopo l’emissione di ogni articolo, emetto un DIV al quale assegno un nome seguito da un suffisso uguale all’ID dell’articolo (per evitare di avere ID doppi), ed immediatamente a seguire, emetto lo script che invoca il render del bottone all’interno del DIV appena generato ed abbinandogli l’URL di riferimento.
In questo modo, oltre ad avere maggiore libertà nella decisione sulle modalità di render dell’elemento plus-one, il vostro documento passerà anche la validazione W3C
7 Commenti
enrico testori
22-Lug-2011 1Ti giuro che ero sbiancato quando dopo l’integrazione del bottone il mio sito aveva perso la validazione sia html5 che 4.1 strict ottenuta in 4 giorni di ottimizzazione del codice.
Grazie a te ho risolto in 2 minuti senza dovermi smazzare altri due giorni.
Ancora grazie
Amdrea
26-Lug-2011 2A me riposrta 2 errori nelle seguenti righe
{lang: ‘it-IT’, parsetags:’explicit’}
e poi questo
“Bad value plusone-div for attribute id on element div: An ID must not contain whitespace.”
<div id="plusone-div”>
C’è qualche cosa da cambiare nel codice per caso?
Andrea Lanfranchi
26-Lug-2011 3Ciao Andrea,
per quanto riguarda il primo errore non specifichi quale errore ti viene indicato.
Per il secondo immagino che tu abbia fatto il copia/incolla del mio codice ma questa funziona solo se hai wordpress.
Bruno
11-Ago-2011 4Salve Andrea, ho copiato sul mio blog wordpress il codice che hai scritto sopra, tutto è andato a meraviglia, il pulsante si vede sui post e sui riassunti dei post in homepage ed è validato. Volevo mettere però il pulsante anche alle pagine e questo non avviene, anche se c’è il codice in index.php. Ho visto che neanche sulla tua pagina info non c’è, esiste un metodo per inserirlo, validato ovviamente?
Andrea Lanfranchi
11-Ago-2011 5Ciao Bruno,
i post di wordpress e le pagine sono trattati in due script diversi. Se vuoi aggiungere il bottone Google+ anche sulle pagine devi inserire il codice all’interno di page.php (usando l’editor nella sezione Aspetto). L’ho fatto anche io proprio ora per la mia info.
Bruno
11-Ago-2011 6Grazie mille, adesso funziona, pensavo che lo script delle pagine fosse index.php
Grazie ancora, faccio +1 su questo post 😉
Salvatore
29-Dic-2011 7Grazie mille!
Categorie
Tag
Copyright © 2007 - bloginfo('name'); ?> - is proudly powered by WordPress
InSense 1.0 Theme by Design Disease hosted by Isiweb S.r.l.