Creare Plugin MozSearch

Firefox 2 supporta MozSearch, una versione semplificata del formato OpenSearch di A9 per creare i plugin di ricerca. Anche i plugin OpenSearch sono supportati; vedi il sito di OpenSearch per ulteriori dettagli.

Un plugin MozSearch è un file XML che descrive il motore di ricerca, il suo URL e i parametri che occorre passare a questo URL.

Nota: MozSearch è un formato specifico di Firefox; se si desidera scrivere un plugin che sia compatibile con altri browser, occorre utilizzare il sistema OpenSearch. Fortunatamente i due formati sono molto simili ed è facile passare da uno all'altro a seconda delle proprie necessità.

Il file di plugin

Il file XMl che descrive un motore di ricerca è abbastanza semplice e segue il template basilare sotto riportato. Le sezioni in corsivo devono essere personalizzate basandosi sui bisogni dello specifico plugin di ricerca che si sta scrivendo.

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>nomeMotore</ShortName>
<Description>descrizioneMotore</Description>
<InputEncoding>codificaInput</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,immagine</image>
<Url type="text/html" method="metodo" template="URLdiRicerca">
  <Param name="nomeParametro1" value="valoreParametro1"/>
  ...
  <Param name="nomeParametroN" value="valoreParametroN"/>
</Url>
<Url type="application/x-suggestions+json" template="suggerimentoURL"/>
<SearchForm>cercaDaURL</SearchForm> 
</SearchPlugin>
nomeMotore
Un nome in breve per il motore di ricerca.
descrizioneMotore
Una breve descrizione del motore di ricerca.
codificaInput
La codifica utilizzata per i dati in input.
immagine
Un'icona a 64 bit di 16x16 pixel che rappresenta il logo del motore di ricerca. Un tool utile per costruire i dati da immettere qui si trova al seguente URL: The data: URI kitchen.
URLdiRicerca
Descrive l'URL o gli URL da usare per la ricerca. L'attributo metodo indica se si debba utilizzare il metodo di ricerca GET o POST. L'attributo template indica l'URL di base per l'interrogazione del motore di ricerca.
E' possibile specificare due tipi di URL:
  • type="text/html" è utilizzato per indicare l'URL dell'interrogazione effettiva.
  • type="application/x-suggestions+json" è utilizzato per indicare l'URL da usare per i suggerimenti sulla ricerca..
Per entrambi i tipi di URL è possibile utilizzare {searchTerms} per sostituire i termini di ricerca inseriti dall'utente nella barra di ricerca.
Per i suggerimenti sulla ricerca, l'URL del template specificato viene utilizzato per recuperare una lista di suggerimenti nel formato JavaScript Object Notation (JSON). Per ulteriori dettagli su come implementare il supporto ai suggerimenti di ricerca su un server, si veda Supportare i suggerimenti nei plugin di ricerca.

Image:SearchSuggestionSample.png

Parametri
I parametri che occorre passare insieme all'interrogazione, come coppie chiave/valore. Quando si specifica i valori, è possibile utilizzare {searchTerms} per inserire i termini di ricerca inseriti dall'utente nella barra di ricerca.
Form di ricerca
L'URL da richiedere per aprire la pagina di ricerca nel sito per il quale il plugin di ricerca è stato progettato. Questo fornisce un modo per Firefox per permettere all'utente di visitare il direttamente il sito.

Ricerca automatica dei plugin

Un sito web che offre un plugin di ricerca può pubblicizzarlo in modo che gli utenti di Firefox possano facilmente scaricarlo e installarlo.

Per supportare la ricerca automatica dei plugin, occorre semplicemente aggiungere una linea alla sezione <HEAD> della pagina web:

<link rel="search" type="application/opensearchdescription+xml" title="nomeRicerca" href="urlPlugin">

Gli elementi da sostituire sono spiegati di seguito:

nomeRicerca
Il nome della ricerca, come "Cerca in MDC" o "Cerca in Yahoo!".
urlPlugin
L'URL del plugin di ricerca in XML, dal quale il browser può scaricarlo.

Se il sito offre più plugin di ricerca, è possibile supportare la ricerca automatica per tutti quanti. Un esempio:

<link rel="search" type="application/opensearchdescription+xml" title="MioSito: cerca per autore" href="http://www.miosito.com/per_autore.xml">
<link rel="search" type="application/opensearchdescription+xml" title="Miosito: cerca per titolo" href="http://www.miosito.com/per_titolo.xml">

In questo modo, il sito può offrire entrambi i plugin di ricerca (ricerca per titolo e ricerca per autore) come entità separate.

Esempio: cercare in Yahoo!

Il seguente XML è il plugin di ricerca per Firefox 2 per le ricerche attraverso Yahoo!:

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Yahoo</ShortName>
<Description>Cerca in Yahoo</Description>
<InputEncoding>UTF-8</InputEncoding>
<SuggestionUrl>http://ff.search.yahoo.com/gossip?output=fxjson&command=</SuggestionUrl>
<Image width="16" height="16">data:image/x-icon;base64,R0lGODlhEAAQAJECAP8AAAAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIplI+py+0NogQuyBDEnEd2kHkfFWUamEzmpZSfmaIHPHrRguUm/fT+UwAAOw==</Image>
<Url type="text/html" method="GET" template="http://search.yahoo.com/search">
  <Param name="p" value="{searchTerms}"/>
  <Param name="ei" value="UTF-8"/>
  <Param name="fr" value="moz2"/>
</Url>
<SearchForm>http://search.yahoo.com/</SearchForm>
</SearchPlugin>

Diciamo che l'utente sceglie di utilizzare Yahoo! come motore di ricerca: inserisce "mozilla" nella barra di ricerca e preme il tasto invio. Firefox utilizzerà la descrizione qui sopra per costruire il seguente URL:

http://search.yahoo.com/search?p=mozilla&ei=UTF-8&fr=moz2

Se l'utente clicca sull'icona nella barra di ricerca, o sceglie l'opzione "Cerca sul web" nel menu Strumenti quando la barra non è visibile, il browser lo porterà a <tt>http://search.yahoo.com/</tt>, il valore dell'elemento <SearchForm>.

Esempio: cercare in MDC

Questo plugin permette di cercare facilmente dei termini nel sito Mozilla Developer Center.

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>MDC</ShortName>
<Description>Cerca in Mozilla Developer Center</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAAK%2FINwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz%2F%2Fz8DJQAggJiQOe%2Ffv2fv7Oz8rays%2FN%2BVkfG%2FiYnJfyD%2F1%2BrVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw%2F8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi%2FG%2BQKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo%2BMXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia%2BCuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq%2FvLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg%2FkdypqCg4H8lUIACnQ%2FSOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD%2BaDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg%3D%3D</Image>
<Url type="text/html" method="GET" template="http://developer.mozilla.org/en/docs/Special:Search?search={searchTerms}"/>
<SearchForm>http://developer.mozilla.org/en/docs/Special:Search</SearchForm> 
</SearchPlugin>

Si noti in questo caso che invece di utilizzare <Param> per definire i parametri del motore di ricerca, sono stati semplicemente incorporati dentro il modello di URL. Questo in effetti è il metodo preferibile quando si utilizza il metodo GET. <Param> dovrebbe essere utilizzato per il metodo POST.

Suggerimenti per la risoluzione dei problemi

Se c'è un errore nell'XML del plugin di ricerca, si dovrebbero incontrare degli errori mentre il plugin viene aggiunto in Firefox (Bon Echo) Alpha 3. Il messaggio d'errore però potrebbe non essere molto d'aiuto, perciò i seguenti suggerimenti potrebbero aiutare a risolvere il problema.

  • Assicurarsi per l'XML sia ben formato. E' possibile eseguire questo controllo caricando il file direttamente in Firefox. Le "e commerciali" nell'URL del template devono essere sostituite con &amp; e i tag devono essere chiusi con un / finale o con un tag di chiusura.
  • L'attributo xmlns è importante: senza di esso potrebbe apparire un messaggio di errore che dice: "Bon Echo could not download the plugin from (URL)" (o la sua traduzione in italiano).

Inoltre, servizio di plugin di ricerca fornisce un meccanismo di log che potrebbe tornare utile agli sviluppatori di plugin. Si utilizzi about:config per impostare la preferenza 'browser.search.log' a true. Quando si aggiunge un plugin di ricerca, appariranno le informazioni loggate nella Console degli errori (Tools->Error Console).

OpenSearch

Firefox 2 supporta anche il formato OpenSearch di Amazon A9 per condividere i risultari delle ricerche. Se si scrive un plugin XML utilizzando le specifiche che si trovano in OpenSearch description syntax, può successivamente essere inserito nella directory <tt>searchengines</tt>.

Il formato OpenSearch Description è simile al formato Mozilla SearchPlugin. Le differenze principali sono l'elemento radice e il namespace XML:

<xml version="1.0"  encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
...
</OpenSearchDescription>

Materiale di riferimento

Document Tags and Contributors

Contributors to this page: Leofiore, Federico, Marcellotalon
Last updated by: Leofiore,