08 nov
Posted by: 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.
Ho già scritto di come sia possibile utilizzare .NET per convalidare un indirizzo IP senza utilizzare complesse espressioni regolari (regexp). Per naturale conversione ecco come effettuare la medesima operazione utilizzando PowerShell
1 2 3 4 5 | Function IsValidIPAddress { param([string]$ipAddress = $(throw "You must provide an address")) Set-Variable -name Ip -value ([System.Net.IPAddress]::Parse("127.0.0.1")) -scope Local If ([System.Net.IPAddress]::TryParse($ipAddress, [ref]$Ip)) { $True } Else { $False } } |
21 lug
Posted by: 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