Creacion de plugins OpenSearch para Firefox

  • Enlace amigable (slug) de la revisión: Creacion_de_plugins_OpenSearch_para_Firefox
  • Título de la revisión: Creacion de plugins OpenSearch para Firefox
  • Id de la revisión: 135387
  • Creada:
  • Creador: Etrigan
  • ¿Es la revisión actual? No
  • Comentario Reverted to earlier version; 1484 words added, 81 words removed; page display name reset to default

Contenido de la revisión

 

OpenSearch

Firefox 2 admite el formato de descripción OpenSearch para complementos (plugins) de búsqueda. Aquellos complementos que usen la sintaxis OpenSearch son compatibles con Firefox e Internet Explorer 7. Por ello es el formato recomendado para cualquier nuevo desarrollo.

Firefox admite además capacidades de búsqueda adicionales no incluidas en la sintaxis de descripción OpenSearch, tales como las "sugerencias de búsqueda" y el elemento SearchForm. Este artículo se centrará en la creación de complementos compatibles con OpenSearch que empleen estas capacidades adicionales de Firefox.

Además, los ficheros de descripción OpenSearch pueden ser anunciados dentro de una página HTML de forma que puedan ser descubiertos automáticamente por el navegador (esto se describe en Detección automática de motores de búsqueda.

Por último, estos complementos, pueden ser instalados mediante código tal y como se describe en Añadir motores de búsqueda desde páginas web.

El fichero de descripción OpenSearch

El fichero XML que describe un motor de búsqueda es bastante sencillo, tal y como se puede ver en la plantilla básica que se muestra más abajo. Las secciones en negrita deben ser personalizadas basándonos en las necesidades particulares del motor para el que estamos escribiendo nuestro complemento.

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
                       xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<ShortName>engineName</ShortName>
<Description>engineDescription</Description>
<InputEncoding>inputEncoding</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,imageData</Image>
<Url type="text/html" method="method" template="searchURL">
  <Param name="paramName1" value="paramValue1"/>
  ...
  <Param name="paramNameN" value="paramValueN"/>
</Url>
<Url type="application/x-suggestions+json" template="suggestionURL"/>
<moz:SearchForm>searchFormURL</moz:SearchForm>
</OpenSearchDescription>
ShortName
Nombre corto para el motor de búsqueda.
Description
Descripción del motor de búsqueda.
InputEncoding
Codificación de caracteres a emplear en los datos que se envían al motor de búsqueda. Por ejemplo, "UTF-8".
Image
Icono de 16x16 codificado en Base-64 que represente al motor de búsqueda. Puedes encontrar una utilidad para generar estos datos en: The data: URI kitchen.
Url
Describe la(s) URL(s) a emplear para la búsqueda. El atributo method indica si se debe emplear una petición GET o POST para obtener los resultados.
Nota: Internet Explorer 7 no admite peticiones POST.
Firefox admite dos tipos de URL en el campo type:
  • type="text/html" se usa al especificar la URL a donde se va a enviar la petición de búsqueda.
  • type="application/x-suggestions+json" se usa al especificar la URL de donde se van a obtener las sugerencias de búsqueda.
El atributo template indica la forma en que se construirá la URL para la consulta. Dentro de este atributo se pueden introducir plantillas que se expanden de forma dinámica; la más habitual es {searchTerms}, la cual se expande a los términos de búsqueda introducidos por el usuario en la barra de búsquedas. En OpenSearch 1.1 parameters se describen los otros tipos admitidos.
Para consultas que devuelven sugerencias de búsqueda, la URL descrita en template se usa para obtener una lista de sugerencias en el formato JSON (JavaScript Object Notation). Para saber más sobre como incorporar sugerencias de búsqueda en el lado del servidor, ver Permitir sugerencias en los plugins de búsqueda.

Image:SearchSuggestionSample.png

Param
Los parámetros que es necesario suministrar junto con la consulta, en la forma de pares clave/valor. En los valores es posible emplear las plantillas dinámicas presentadas anteriormente; por ejemplo, se puede usar {searchTerms} para insertar los términos de búsqueda que el usuario introdujo en la barra de búsquedas.
Nota: Internet Explorer 7 no admite este elemento.
SearchForm
La URL donde se encuentra la página de búsquedas del sitio al que hace referencia el complemento que estamos desarrollando. Esto permite al usuario acceder directamente al sitio web en cuestión.
Nota: Dado que este elemento es específico de Firefox y no forma parte de la especificación OpenSearch, en el ejemplo anterior, usamos el prefijo "moz:" en el espacio de nombres XML para asegurarnos que otros agentes de usuario que no admiten este elemento puedan ignoralo de forma segura.

Detección automática de complementos de búsqueda

Un sitio web que ofrezca un complemento de búsqueda puede anunciarlo, de forma que los usuarios de Firefox puedan descargarlo e instalarlo fácilmente.

Para incorporar la detección automática, sólo es necesario añadir una línea a la sección <head> de la página:

<link rel="search" type="application/opensearchdescription+xml" title="searchTitle" href="pluginURL">

Sustituiremos los elementos en itálica tal y como se explica a continuación:

searchTitle
El título de la búsqueda que se va a llevar a cabo; por ejemplo, "Buscar en MDC" o "Búsqueda en Google". Este valor debe coincidir con el ShortName de nuestro complemento.
pluginURL
La URL que debe emplear el navegador para descargar el fichero XML con la descripción del complemento.

Si tu sitio ofrece múltiples complementos de búsqueda también es posible que el navegador los descubra de forma automática; basta con repetir el link las veces que sea necesario. Por ejemplo:

<link rel="search" type="application/opensearchdescription+xml" title="MiSitio: Por Autor" href="http://www.misitio.com/autores.xml">
<link rel="search" type="application/opensearchdescription+xml" title="MiSitio: Por Título" href="http://www.misitio.com/titulos.xml">

De esta forma podemos ofrecer complementos independientes para buscar tanto por autor como por título.

Resolución de problemas

Si hay algún error en el fichero XML que describe el complemento, seguramente habrá problemas al añadir en Firefox 2 un complemento descubierto automáticamente. El mensaje de error puede no ser de mucha ayuda, así que los siguientes consejos pueden ayudar a encontrar la causa del problema.

  • Asegúrate de que el documento XML de tu complemento está bien formado. Puedes comprobarlo cargando el fichero directamente en Firefox. Los Ampersands en la plantilla de la URL deben ser escapadas con &amp; y las etiquetas (tags) deben ser cerradas con una barra (/) al final o con la correspondiente etiqueta de cierre.
  • El atributo xmlns es importante. Sin él, puedes obtener un mensaje de error indicando que "Firefox no pudo descargar el motor de búsqueda desde: (URL)".
  • Ten en cuente que debes incluir una URL del tipo text/html — los complmentos que sólo incluyan URLs del tipo Atom o RSS (lo cual es válido, pero Firefox no admite) producirán el error "no pudo descargar el motor de búsqueda".
  • Los favicons obtenidos remotamente no deben ser mayores de 10KB (ver {{ Bug("361923") }}).

Adicionalmente, el servicio de complementos de búsqueda suministra un mecanismo de registro (logging) que puede ser de utilidad a los desarrolladores de complementos. Usa about:config para establecer la preferencia 'browser.search.log' al valor true. La información de registro aparecerá en la consola de errores de Firefox (Tools->Error Console) cuando se añada un complemento de búsqueda.

Material de referencia

Interwiki link

{{ languages( { "ca": "ca/Creaci\u00f3_de_connectors_OpenSearch_per_al_Firefox", "en": "en/Creating_OpenSearch_plugins_for_Firefox", "fr": "fr/Cr\u00e9ation_de_plugins_OpenSearch_pour_Firefox", "ja": "ja/Creating_OpenSearch_plugins_for_Firefox", "pl": "pl/Tworzenie_wtyczek_OpenSearch_dla_Firefoksa", "pt": "pt/Criando_plugins_OpenSearch_para_o_Firefox" } ) }}

Fuente de la revisión

<p>
 </p>
<h2 id="OpenSearch" name="OpenSearch">OpenSearch</h2>
<p><a href="es/Firefox_2">Firefox 2</a> admite el formato de descripción <a class="external" href="http://opensearch.org/">OpenSearch</a> para complementos (<em>plugins</em>) de búsqueda. Aquellos complementos que usen <a class="external" href="http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document">la sintaxis OpenSearch</a> son compatibles con Firefox e Internet Explorer 7. Por ello es el formato recomendado para cualquier nuevo desarrollo.
</p><p>Firefox admite además capacidades de búsqueda adicionales no incluidas en <a class="external" href="http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document">la sintaxis de descripción OpenSearch</a>, tales como las "sugerencias de búsqueda" y el elemento <code>SearchForm</code>. Este artículo se centrará en la creación de complementos compatibles con OpenSearch que empleen estas capacidades adicionales de Firefox.
</p><p>Además, los ficheros de descripción OpenSearch pueden ser anunciados dentro de una página HTML de forma que puedan ser descubiertos automáticamente por el navegador (esto se describe en <a href="#Autodiscovery_of_search_plugins">Detección automática de motores de búsqueda</a>.
</p><p>Por último, estos complementos, pueden ser instalados mediante código tal y como se describe en <a href="es/A%c3%b1adir_motores_de_b%c3%basqueda_desde_p%c3%a1ginas_web">Añadir motores de búsqueda desde páginas web</a>.
</p>
<h2 id="El_fichero_de_descripci.C3.B3n_OpenSearch" name="El_fichero_de_descripci.C3.B3n_OpenSearch">El fichero de descripción OpenSearch</h2>
<p>El fichero XML que describe un motor de búsqueda es bastante sencillo, tal y como se puede ver en la plantilla básica que se muestra más abajo. Las secciones en negrita deben ser personalizadas basándonos en las necesidades particulares del motor para el que estamos escribiendo nuestro complemento.
</p>
<pre class="eval">&lt;OpenSearchDescription xmlns="<span class="nowiki">http://a9.com/-/spec/opensearch/1.1/</span>"
                       xmlns:moz="<span class="nowiki">http://www.mozilla.org/2006/browser/search/</span>"&gt;
&lt;ShortName&gt;<strong>engineName</strong>&lt;/ShortName&gt;
&lt;Description&gt;<strong>engineDescription</strong>&lt;/Description&gt;
&lt;InputEncoding&gt;<strong>inputEncoding</strong>&lt;/InputEncoding&gt;
&lt;Image width="16" height="16"&gt;data:image/x-icon;base64,<strong>imageData</strong>&lt;/Image&gt;
&lt;Url type="text/html" method="<strong>method</strong>" template="<strong>searchURL</strong>"&gt;
  &lt;Param name="<strong>paramName1</strong>" value="<strong>paramValue1</strong>"/&gt;
  ...
  &lt;Param name="<strong>paramNameN</strong>" value="<strong>paramValueN</strong>"/&gt;
&lt;/Url&gt;
&lt;Url type="application/x-suggestions+json" template="<strong>suggestionURL</strong>"/&gt;
&lt;moz:SearchForm&gt;<strong>searchFormURL</strong>&lt;/moz:SearchForm&gt;
&lt;/OpenSearchDescription&gt;
</pre>
<dl><dt> <strong>ShortName</strong>
</dt><dd> Nombre corto para el motor de búsqueda.
</dd></dl>
<dl><dt> <strong>Description</strong>
</dt><dd> Descripción del motor de búsqueda.
</dd></dl>
<dl><dt> <strong>InputEncoding</strong>
</dt><dd> Codificación de caracteres a emplear en los datos que se envían al motor de búsqueda. Por ejemplo, "UTF-8".
</dd></dl>
<dl><dt> <strong>Image</strong>
</dt><dd> Icono de 16x16 codificado en Base-64 que represente al motor de búsqueda. Puedes encontrar una utilidad para generar estos datos en: <a class="external" href="http://software.hixie.ch/utilities/cgi/data/data">The data: URI kitchen</a>.
</dd></dl>
<dl><dt> <strong>Url</strong>
</dt><dd> Describe la(s) URL(s) a emplear para la búsqueda. El atributo <code>method</code> indica si se debe emplear una petición <code>GET</code> o <code>POST</code> para obtener los resultados.
</dd></dl>
<dl><dd><div class="note"><strong>Nota:</strong> Internet Explorer 7 no admite peticiones <code>POST</code>.</div>
</dd></dl>
<dl><dd> Firefox admite dos tipos de URL en el campo <code>type</code>:
</dd></dl>
<ul><li> <code>type="text/html"</code> se usa al especificar la URL a donde se va a enviar la petición de búsqueda.
</li><li> <code>type="application/x-suggestions+json"</code> se usa al especificar la URL de donde se van a obtener las sugerencias de búsqueda.
</li></ul>
<dl><dd> El atributo <code>template</code> indica la forma en que se construirá la URL para la consulta. Dentro de este atributo se pueden introducir plantillas que se expanden de forma dinámica; la más habitual es <code>{searchTerms}</code>, la cual se expande a los términos de búsqueda introducidos por el usuario en la barra de búsquedas. En <a class="external" href="http://www.opensearch.org/Specifications/OpenSearch/1.1/Draft_3#OpenSearch_1.1_parameters">OpenSearch 1.1 parameters</a> se describen los otros tipos admitidos.
</dd></dl>
<dl><dd> Para consultas que devuelven sugerencias de búsqueda, la URL descrita en <code>template</code> se usa para obtener una lista de sugerencias en el formato JSON (JavaScript Object Notation). Para saber más sobre como incorporar sugerencias de búsqueda en el lado del servidor, ver <a href="es/Permitir_sugerencias_en_los_plugins_de_b%c3%basqueda">Permitir sugerencias en los plugins de búsqueda</a>.
</dd></dl>
<p><img alt="Image:SearchSuggestionSample.png" fileid="1132" src="File:es/Media_Gallery/SearchSuggestionSample.png">
</p>
<dl><dt> <strong>Param</strong>
</dt><dd> Los parámetros que es necesario suministrar junto con la consulta, en la forma de pares clave/valor. En los valores es posible emplear las plantillas dinámicas presentadas anteriormente; por ejemplo, se puede usar <code>{searchTerms}</code> para insertar los términos de búsqueda que el usuario introdujo en la barra de búsquedas.
</dd></dl>
<dl><dd><div class="note"><strong>Nota:</strong> Internet Explorer 7 no admite este elemento.</div>
</dd></dl>
<dl><dt> <strong>SearchForm</strong>
</dt><dd> La URL donde se encuentra la página de búsquedas del sitio al que hace referencia el complemento que estamos desarrollando. Esto permite al usuario acceder directamente al sitio web en cuestión.
</dd><dd><div class="note"><strong>Nota:</strong> Dado que este elemento es específico de Firefox y no forma parte de la especificación OpenSearch, en el ejemplo anterior, usamos el prefijo "<code>moz:</code>" en el espacio de nombres XML para asegurarnos que otros agentes de usuario que no admiten este elemento puedan ignoralo de forma segura.</div>
</dd></dl>
<h2 id="Detecci.C3.B3n_autom.C3.A1tica_de_complementos_de_b.C3.BAsqueda" name="Detecci.C3.B3n_autom.C3.A1tica_de_complementos_de_b.C3.BAsqueda">Detección automática de complementos de búsqueda</h2>
<p>Un sitio web que ofrezca un complemento de búsqueda puede anunciarlo, de forma que los usuarios de Firefox puedan descargarlo e instalarlo fácilmente.
</p><p>Para incorporar la detección automática, sólo es necesario añadir una línea a la sección <code>&lt;head&gt;</code> de la página:
</p>
<pre class="eval">&lt;link rel="search" type="application/opensearchdescription+xml" title="<em>searchTitle</em>" href="<em>pluginURL</em>"&gt;
</pre>
<p>Sustituiremos los elementos en itálica tal y como se explica a continuación:
</p>
<dl><dt> <strong>searchTitle</strong>
</dt><dd> El título de la búsqueda que se va a llevar a cabo; por ejemplo, "Buscar en MDC" o "Búsqueda en Google". Este valor debe coincidir con el <code>ShortName</code> de nuestro complemento.
</dd></dl>
<dl><dt> <strong>pluginURL</strong>
</dt><dd> La URL que debe emplear el navegador para descargar el fichero XML con la descripción del complemento.
</dd></dl>
<p>Si tu sitio ofrece múltiples complementos de búsqueda también es posible que el navegador los descubra de forma automática; basta con repetir el <code>link</code> las veces que sea necesario. Por ejemplo:
</p>
<pre class="eval">&lt;link rel="search" type="application/opensearchdescription+xml" title="MiSitio: Por Autor" href="<a class=" external" href="http://www.misitio.com/autores.xml" rel="freelink">http://www.misitio.com/autores.xml</a>"&gt;
&lt;link rel="search" type="application/opensearchdescription+xml" title="MiSitio: Por Título" href="<a class=" external" href="http://www.misitio.com/titulos.xml" rel="freelink">http://www.misitio.com/titulos.xml</a>"&gt;
</pre>
<p>De esta forma podemos ofrecer complementos independientes para buscar tanto por autor como por título.
</p>
<h2 id="Resoluci.C3.B3n_de_problemas" name="Resoluci.C3.B3n_de_problemas">Resolución de problemas</h2>
<p>Si hay algún error en el fichero XML que describe el complemento, seguramente habrá problemas al añadir en Firefox 2 un complemento descubierto automáticamente. El mensaje de error puede no ser de mucha ayuda, así que los siguientes consejos pueden ayudar a encontrar la causa del problema.
</p>
<ul><li>Asegúrate de que el documento XML de tu complemento está bien formado. Puedes comprobarlo cargando el fichero directamente en Firefox. Los <em>Ampersands</em> en la plantilla de la URL deben ser escapadas con &amp;amp; y las etiquetas (<em>tags</em>) deben ser cerradas con una barra (<code>/</code>) al final o con la correspondiente etiqueta de cierre.
</li><li>El atributo <code>xmlns</code> es importante. Sin él, puedes obtener un mensaje de error indicando que "Firefox no pudo descargar el motor de búsqueda desde: (URL)".
</li><li>Ten en cuente que <strong>debes</strong> incluir una URL del tipo <code>text/html</code> — los complmentos que sólo incluyan URLs del tipo Atom o <a href="es/RSS">RSS</a> (lo cual es válido, pero Firefox no admite) producirán el error "no pudo descargar el motor de búsqueda".
</li><li>Los <em>favicons</em> obtenidos remotamente no deben ser mayores de 10KB (ver {{ Bug("361923") }}).
</li></ul>
<p>Adicionalmente, el servicio de complementos de búsqueda suministra un mecanismo de registro (<em>logging</em>) que puede ser de utilidad a los desarrolladores de complementos. Usa <em>about:config</em> para establecer la preferencia '<code>browser.search.log</code>' al valor <code>true</code>. La información de registro aparecerá en la consola de errores de Firefox (Tools-&gt;Error Console) cuando se añada un complemento de búsqueda.
</p>
<h2 id="Material_de_referencia" name="Material_de_referencia">Material de referencia</h2>
<ul><li><a class="external" href="http://opensearch.org/">OpenSearch - Documentación oficial</a>
</li><li>Technorati.com tiene un ejemplo de fichero XML en <a class=" external" href="http://technorati.com/osd.xml" rel="freelink">http://technorati.com/osd.xml</a>
</li><li>Más información sobre problemas en la detección automática en bugzilla {{ Bug("340208") }}
</li><li>Wikipedia - <a class="external" href="http://es.wikipedia.org/wiki/Data:_URL"><code>data:</code> URL</a>
</li><li><a class="external" href="http://searchy.protecus.de/">Searchy</a> - <a class="external" href="http://searchy.protecus.de/en/add2.php">Crea</a> tu propio complemento o usa <a class="external" href="http://searchy.protecus.de/en/searchbox-add-ons.php">la lista de complementos</a>.
</li><li><a class="external" href="http://www.searchplugins.net">searchplugins.net</a> - Crea complementos OpenSearch plugins para ser usados con Firefox 2. <a class="external" href="http://www.searchplugins.net/pluginlist.aspx">Lista de complementos de búsqueda</a>
</li><li><a class="external" href="http://ready.to/search/en/">Ready2Search</a> - Crea complementos OpenSearch. <a class="external" href="http://ready.to/search/make/en_make_plugin.htm">Búsquedas personalizadas a través de Ready2Search</a>
</li></ul>
<p><span class="comment">Interwiki link</span>
</p>{{ languages( { "ca": "ca/Creaci\u00f3_de_connectors_OpenSearch_per_al_Firefox", "en": "en/Creating_OpenSearch_plugins_for_Firefox", "fr": "fr/Cr\u00e9ation_de_plugins_OpenSearch_pour_Firefox", "ja": "ja/Creating_OpenSearch_plugins_for_Firefox", "pl": "pl/Tworzenie_wtyczek_OpenSearch_dla_Firefoksa", "pt": "pt/Criando_plugins_OpenSearch_para_o_Firefox" } ) }}
Revertir a esta revisión