11 febbraio 2009  3

OpenSearch: come inserire il proprio sito tra i motori di ricerca preferiti di Internet Explorer e Firefox

a9 logoOpenSearch è uno standard per la condivisione di risultati ottenuti dalla medesima ricerca, eseguita però tramite differenti tecnologie. I client predisposti (siano essi webservice, internet browser o meri aggregatori) possono appoggiarsi ai search engine locali, siano essi definiti a livello di singolo host (sito web o blog) o di una rete estesa distribuita sul territorio, per indirizzare in maniera più circoscritta l’oggetto di una ricerca.

Molto sinteticamente, tramite OpenSearch, ad esempio, è possibile indicare come “knoweledge base” di una eventuale interrogazione, il singolo patrimonio di contenuti del proprio blog, utilizzando il search engine ad esso associato come strumento di esplorazione.

opensearch schema

Al momento solo Internet Explorer (dalla versione 7 in poi) e Firefox, supportano in maniera nativa OpenSearch, e interpretano correttamente il meta tag di autodiscovery dedicato alla notifica, da parte del sito web, della disponibilità alla ricerca specifica tramite il motore locale.

Tale disponibilità viene notificata dalla presenza del nome del sito in questione nella “tendina” dei motori di ricerca disponibili, generalmente associata alla casella dedicata presente in entrambi i browser già citati. Internet Explorer evidenzia la presenza di un sito abilitato OpenSearch tramite una stellina accanto al nome (nella citata “tendina”), mentre Firefox  aggiunge proprio una voce “Aggiungi nomedelsito”.

Entrambe le soluzioni evidentemente, non sono di immediata comprensione ed acquisizione da parte del visitatore, anche il più attento; per questo motivo potrebbe essere utile aggiungere un collegamento direttamente nella sidebar del proprio sito o blog, che inviti l’utente ad aggiungere il “nostro” motore di ricerca ai preferiti del suo browser.

La procedura

L’obiettivo di questa guida non è quello di descrivere come abilitare OpenSearch sul proprio sito e si dà per scontato che questa funzionalità sia già disponibile tramite il sistema di web authoring utilizzato.

BlogEngine.NET, ad esempio, è già nativamente predisposto per questa tecnologia, mentre Wordpress può essere abilitato tramite uno dei tanti plugin disponibili demandati allo scopo. Personalmente mi sento di consigliare l’uso di Add browser Search, di Giovambattista Fazioli, ottimo sviluppatore nonchè amico del sottoscritto.

Per la scrittura del codice javascript necessario alla realizzazione del link è necessario ricorrere ad una funzione del DOM supportata sia da Internet Explorer che da FireFox, ovvero:

window.external.AddSearchProvider(sUrl)

Questa funzione accetta come parametro di input (sUrl) l’indirizzo del file XMLW che contiene i parametri descrittivi del servizio OpenSearch ospitato dal proprio sito, secondo le specifiche dello standard di formato.

Ad esempio, nel caso di BlogEngine.NET, il file XML viene generato dinamicamente da un HTTPHandler, per cui, posto www.miosito.com il nome del sito di riferimento, l’indirizzo corretto sarà dato da http://www.miosito.com/opensearch.axd.

Inoltre, sarà necessario utilizzare anche la funzione:

window.external.IsSearchProviderInstalled(sUrl)

per verificare se è stato già aggiunto l’indirizzo assoluto del provider di ricerca ed evitare quindi la creazione di un duplicato con conseguente generazione di un messaggio di errore.

Ecco quindi il codice da inserire nel template del proprio sito o blog, tenendo presente che è stato preso come riferimento BlogEngine.NET come sistema di generazione dei contenuti utilizzato (il codice inline presente al di fuori di javascriptW è in c#)

<a onclick="javascript:if(window.external.IsSearchProviderInstalled
('<%=Utils.AbsoluteWebRoot %>')==0)
window.external.AddSearchProvider
('<%=Utils.AbsoluteWebRoot %>opensearch.axd');
else alert('Questo blog è stato già aggiunto ai
tuoi motori di ricerca preferiti');return null">
Aggiungi questo blog ai tuoi motori di ricerca preferiti</a>

Per motivi tipografici il codice è stato spezzato su più linee, ma deve essere scritto interamente sulla medesima riga.

Volendo è possibile inserire un ulteriore controllo per far comparire il collegamento solo nel caso in cui il browser utilizzato dall’utente sia Internet Explorer o Firefox, dato che OpenSearch non è supportato dagli altri concorrenti.

<% if (Request.Browser.Browser.ToLower() == "ie" ||
     Request.Browser.Browser.ToLower() == "firefox") 
     {  %>
<a onclick="javascript:if(window.external.IsSearchProviderInstalled
('<%=Utils.AbsoluteWebRoot %>')==0)
window.external.AddSearchProvider
('<%=Utils.AbsoluteWebRoot %>opensearch.axd');
else alert('Questo blog è stato già aggiunto ai
tuoi motori di ricerca preferiti');return null">
Aggiungi questo blog ai tuoi motori di ricerca preferiti</a>
<% } %>

E’ abbastanza semplice fare le opportune modifiche in PHPW per rendere il codice utilizzato compatibile anche con WordPress. Allo stesso modo, utilizzando indirizzamenti assoluti direttamente nel codice javascript è possibile adeguare il tutto anche all’utilizzo in un semplice pagina HTMLW.

Potete vedere un esempio concreto della funzionalità descritta, nella sidebar di questo sito (arricchita anche con una piccola immagine).

Esprimi il tuo giudizio

Commenti (3) -

Gioxx
Gioxx
11 feb 2009 alle 19:32  01
Ancora una volta niente immagini nei feed Frown
Cristiano
Cristiano
11 feb 2009 alle 19:42  02
@ Gioxx:
Hai provato la solita procedura già consigliata ?
1- Aggiornamento del feed a http://feeds2.feedburner.com/cristianofinonet.
2- Svuotamento della cache del browser utilizzato.

Notificami se il problema persiste Wink

Gioxx
Gioxx
12 feb 2009 alle 00:39  03
Una mia distrazione: avevo dimenticato di aggiornare il puntamento feed. Ora funziona tutto correttamente ;)

Aggiungi Commento

biucitecode
  • Commento
  • Anteprima
Loading


| |   |  

Codice QR

Codice QR - cristianofino.net

Ultimi Commenti