{"id":152,"date":"2006-12-03T18:05:30","date_gmt":"2006-12-03T17:05:30","guid":{"rendered":"http:\/\/www.gatellier.be\/blog\/?p=152"},"modified":"2008-03-25T12:43:08","modified_gmt":"2008-03-25T11:43:08","slug":"plugin-recherche-opensearch-firefox2","status":"publish","type":"post","link":"https:\/\/gatellier.be\/blog\/plugin-recherche-opensearch-firefox2\/","title":{"rendered":"Plugin de recherche OpenSearch pour Firefox 2"},"content":{"rendered":"<p>Firefox version 2 supporte le standard de formatage de donn\u00e9es de recherche <a href=\"\/\/www.opensearch.org\/Home\" lang=\"en\">OpenSearch<\/a>. Gr\u00e2ce \u00e0 cela, on peut cr\u00e9er des petits plugins de recherche tr\u00e8s utiles pour son navigateur pr\u00e9f\u00e9r\u00e9.<\/p>\n<h3>Format XML OpenSearch<\/h3>\n<p>Les <a href=\"\/\/www.opensearch.org\/Specifications\/OpenSearch\/1.1\">d\u00e9finitions des diff\u00e9rents \u00e9l\u00e9ments composant un XML OpenSearch<\/a> nous aident \u00e0 composer notre propre plugin de recherche.<br \/>\nPour une installation standard de Firefox, vous trouverez les plugins d\u00e9j\u00e0 install\u00e9s dans le r\u00e9pertoire <code>C:\\Program Files\\Mozilla Firefox\\searchplugins<\/code>. Normalement ce r\u00e9pertoire ne contient que des fichiers .xml qui sont les d\u00e9finitions des plugins. Prenons-en un, le fichier amazon.xml<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;SearchPlugin xmlns=&quot;\/\/www.mozilla.org\/2006\/browser\/search\/&quot;&gt;\r\n&lt;ShortName&gt;Amazon.com&lt;\/ShortName&gt;\r\n&lt;Description&gt;Amazon.com Search&lt;\/Description&gt;\r\n&lt;InputEncoding&gt;ISO-8859-1&lt;\/InputEncoding&gt;\r\n&lt;Image width=&quot;16&quot; height=&quot;16&quot;&gt;data:image\/x-icon;base64,iVBORw0KGgoA...=&lt;\/Image&gt;\r\n&lt;Url type=&quot;text\/html&quot; method=&quot;GET&quot; template=&quot;\/\/www.amazon.com\/exec\/obidos\/external-search\/&quot;&gt;\r\n\t&lt;Param name=&quot;field-keywords&quot; value=&quot;{searchTerms}&quot;\/&gt;\r\n\t&lt;Param name=&quot;mode&quot; value=&quot;blended&quot;\/&gt;\r\n\t&lt;Param name=&quot;tag&quot; value=&quot;mozilla-20&quot;\/&gt;\r\n\t&lt;Param name=&quot;sourceid&quot; value=&quot;Mozilla-search&quot;\/&gt;\r\n&lt;\/Url&gt;\r\n&lt;SearchForm&gt;\/\/www.amazon.com\/&lt;\/SearchForm&gt;\r\n&lt;\/SearchPlugin&gt;\r\n<\/pre>\n<dl>\n<dt><code>SearchPlugin<\/code><\/dt>\n<dd>D\u00e9finition du namespace des diff\u00e9rents nodes du fichier xml (dans ce cas-ci, on parle de la d\u00e9finition de Firefox)<\/dd>\n<dt><code>ShortName<\/code><\/dt>\n<dd>Nom du plugin de recherche<\/dd>\n<dt><code>Description<\/code><\/dt>\n<dd>Description du plugin de recherche<\/dd>\n<dt><code>InputEncoding<\/code><\/dt>\n<dd>Encodage des caract\u00e8res du formulaire<\/dd>\n<dt><code>Image<\/code><\/dt>\n<dd>D\u00e9finition de l&#8217;ic\u00f4ne qui sera ajout\u00e9e dans l&#8217;interface de recherche encod\u00e9e en Base64<\/dd>\n<dt><code>Url<\/code><\/dt>\n<dd>Contient les diff\u00e9rents attributs du formulaire de recherche<\/p>\n<dl>\n<dt><code>type<\/code><\/dt>\n<dd>Format dans lequel les donn\u00e9es sont envoy\u00e9es au serveur<\/dd>\n<dt><code>method<\/code><\/dt>\n<dd><strong>GET ou POST<\/strong> m\u00e9thode d&#8217;envoi des donn\u00e9es au serveur<\/dd>\n<dt><code>template<\/code><\/dt>\n<dd>C&#8217;est l&#8217;<strong>ACTION<\/strong> du formulaire de recherche<\/dd>\n<\/dl>\n<\/dd>\n<dt><code>Param<\/code><\/dt>\n<dd>Les diff\u00e9rents champs qui sont pass\u00e9es au formulaire. Le champ sur lequel se fait la requ\u00eate doit avoir la <code><strong>value=\"{searchTerms}\"<\/strong><\/code>. C&#8217;est les termes qui seront entr\u00e9s dans le formulaire de recherche de Firefox<\/dd>\n<dt><code>SearchForm<\/code><\/dt>\n<dd>C&#8217;est le lien vers les soumissions de formulaires vides iront.<\/dd>\n<\/dl>\n<h3>Analyse d&#8217;un formulaire \u00e0 convertir en plugin.<\/h3>\n<p>Pour un premier exemple, je me suis bas\u00e9 sur la <a href=\"\/\/www.tutmarks.com\/\">page d&#8217;accueil de Tutmaks.com<\/a> (excellente ressource de tutoriels). Le moteur de recherche du site ne fonctionnant pour l&#8217;instant que sur des pages \/index.php et pas sur les pages de d\u00e9tail \/story.php.<\/p>\n<p align=\"center\"><a href=\"\/blog\/?pp_album=1&#038;pp_image=tutmarks_com.png\"><img decoding=\"async\" src=\"\/blog\/wp-content\/photos\/tutmarks_com.png\" alt=\"Ecran de recherche Tutmarks.com\" title=\"Ecran de recherche Tutmarks.com\" border=\"0\" \/><\/a><\/p>\n<p>A l&#8217;aide de l&#8217;Inspector de Firebug, j&#8217;ai facilement rep\u00e9r\u00e9 que le nom du champ du formulaire \u00e9tait &#8220;search&#8221; l&#8217;action est vide (d&#8217;o\u00f9 l&#8217;erreur ci-dessus).<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;InputEncoding&gt;ISO-8859-1&lt;\/InputEncoding&gt;\r\n&lt;Url type=&quot;text\/html&quot; method=&quot;GET&quot; template=&quot;\/\/tutmarks.com\/index.php&quot;&gt;\r\n\t&lt;Param name=&quot;search&quot; value=&quot;{searchTerms}&quot;\/&gt;\r\n&lt;\/Url&gt;\r\n<\/pre>\n<p>Pour un second exemple, j&#8217;ai pris la <a href=\"\/\/1307.be\/fr\/jsp\/1x07be_reverse_search.jsp\">recherche invers\u00e9e de num\u00e9ros de t\u00e9l\u00e9phone sur 1307.be<\/a>.<\/p>\n<p align=\"center\"><a href=\"\/blog\/?pp_album=1&#038;pp_image=1307_be.png\"><img decoding=\"async\" src=\"\/blog\/wp-content\/photos\/1307_be.png\" alt=\"Ecran de recherche invers\u00e9e de num\u00e9ros de t\u00e9l\u00e9phone 1307.be\" title=\"Ecran de recherche invers\u00e9e de num\u00e9ros de t\u00e9l\u00e9phone 1307.be\" border=\"0\" \/><\/a><\/p>\n<p>Il y a plusieurs champs cach\u00e9s dans ce formulaire-ci. J&#8217;ai repris les nom et valeurs de ces champs en tant que Param de mon XML<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;InputEncoding&gt;ISO-8859-1&lt;\/InputEncoding&gt;\r\n&lt;Url type=&quot;text\/html&quot; method=&quot;POST&quot; template=&quot;\/\/1307.be\/fr\/servlets\/ReverseServlet&quot;&gt;\r\n\t&lt;Param name=&quot;number&quot; value=&quot;{searchTerms}&quot;\/&gt;\r\n\t&lt;Param name=&quot;iso_language&quot; value=&quot;fr&quot;\/&gt;\r\n\t&lt;Param name=&quot;template&quot; value=&quot;1x07be&quot;\/&gt;\r\n&lt;\/Url&gt;\r\n<\/pre>\n<h3>Ajout de l&#8217;ic\u00f4ne du plugin de recherche.<\/h3>\n<p>J&#8217;ai repris les favic\u00f4nes des <a href=\"\/\/tutmarks.com\/favicon.ico\">sites<\/a> <a href=\"\/\/1307.be\/favicon.ico\">repectifs<\/a>. Je les ai enregistr\u00e9es sur mon ordinateur et je les ai <a href=\"\/\/www.motobit.com\/util\/base64-decoder-encoder.asp\" lang=\"en\">converties en base64 avec cet outil<\/a>. De ce fait, les images sont transform\u00e9es en code et sont plus facilement transportable d&#8217;un environnement \u00e0 un autre (les images sont incluses dans le fichier XML sous forme de code).<\/p>\n<p>La documentation OpenSearch pr\u00e9cise qu&#8217;on peut aussi mettre une <acronym title=\"universal resource locator\">url<\/acronym> vers une ic\u00f4ne de favori ou autre image.<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;Image height=&quot;16&quot; width=&quot;16&quot; type=&quot;image\/x-icon&quot;&gt;&lt;br \/&gt;\r\n\/\/example.com\/favicon.ico&lt;br \/&gt;\r\n&lt;\/Image&gt;&lt;br \/&gt;\r\n<\/pre>\n<h3>Code \u00e0 rajouter dans les pages html.<\/h3>\n<p>Pour que le plugin soit \u00e0 la disposition de tout le monde, il faut l&#8217;ins\u00e9rer dans les pages de votre site.<\/p>\n<p>Cela se fait ais\u00e9ment en ajoutant une balise <code><strong>link real=\"search\"<\/strong><\/code> dans le header de la page html.<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;link rel=&quot;search&quot; type=&quot;application\/opensearchdescription+xml&quot; title=&quot;Tutmarks.com&quot; href=&quot;\/chemin-vers\/d\u00e9finition.xml&quot;&gt;\r\n<\/pre>\n<h3>Ajouter les plugins cr\u00e9\u00e9s \u00e0 Firefox 2.<\/h3>\n<p>Quand un plugin de recherche a \u00e9t\u00e9 trouv\u00e9 par Firefox, l&#8217;ic\u00f4ne de la liste des moteurs de recherche prend un fond bleut\u00e9.<\/p>\n<p align=\"center\"><a href=\"\/blog\/?pp_album=1&#038;pp_image=ff2_search_plugin_found.png\"><img decoding=\"async\" src=\"\/blog\/wp-content\/photos\/ff2_search_plugin_found.png\" alt=\"Un plugin de recherche a \u00e9t\u00e9 trouv\u00e9 par Firefox\" title=\"Un plugin de recherche a \u00e9t\u00e9 trouv\u00e9 par Firefox\" border=\"0\" \/><\/a><\/p>\n<p>En cliquant sur cette ic\u00f4ne, on peut voir la liste des plugins de recherche. Dans le bas du menu, on peut rajouter les diff\u00e9rents plugins de recherches.<\/p>\n<p align=\"center\"><a href=\"\/blog\/?pp_album=1&#038;pp_image=ff2_search_plugin_add_multiple.png\"><img decoding=\"async\" src=\"\/blog\/wp-content\/photos\/ff2_search_plugin_add_multiple.png\" alt=\"Ajout de plusieurs plugins de recherche dans Firefox\" title=\"Ajout de plusieurs plugins de recherche dans Firefox\" border=\"0\" \/><\/a><\/p>\n<p>L&#8217;ordre des moteurs de recherche peut \u00eatre modifi\u00e9 et on peut aussi en supprimer via l&#8217;interface de gestion des plugins de recherche<\/p>\n<p align=\"center\"><a href=\"\/blog\/?pp_album=1&#038;pp_image=ff2_search_plugin_manage.png\"><img decoding=\"async\" src=\"\/blog\/wp-content\/photos\/ff2_search_plugin_manage.png\" alt=\"\u00e9cran pour ranger les plugin de recherche sur Firefox\" title=\"\u00e9cran pour ranger les plugin de recherche sur Firefox\" border=\"0\" \/><\/a><\/p>\n<p>Le plugin de recherche Tutmarks pour Firefox 2 pr\u00eat \u00e0 l&#8217;usage.<\/p>\n<p align=\"center\"><a href=\"\/blog\/?pp_album=1&#038;pp_image=ff2_search_plugin_usage.png\"><img decoding=\"async\" src=\"\/blog\/wp-content\/photos\/ff2_search_plugin_usage.png\" alt=\"Le plugin de recherche sur Tutmaks est pr\u00eat \u00e0 l'usage\" title=\"Le plugin de recherche sur Tutmaks est pr\u00eat \u00e0 l'usage\" border=\"0\" \/><\/a><\/p>\n<h4>Liens relatifs<\/h4>\n<ul>\n<li><a href=\"\/\/www.opensearch.org\/Home\" lang=\"en\">l&#8217;organisation OpenSearch<\/a><\/li>\n<li><a href=\"\/\/developer.mozilla.org\/en\/docs\/Creating_OpenSearch_plugins_for_Firefox\" lang=\"en\">Documentation sur le site Mozilla des plugin OpenSearch<\/a><\/li>\n<li><a href=\"\/\/tutmarks.com\/story.php?title=creer-un-plugin-pour-ajouter-un-moteur-de-recherche-Firefox\" lang=\"fr\">Tutorial pour les extensions Firefox avant la version 2<\/a><\/li>\n<li><a href=\"\/\/www.motobit.com\/util\/base64-decoder-encoder.asp\">Encoder et d\u00e9coder en Base64<\/a> en ligne<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Firefox version 2 supporte le standard de formatage de donn\u00e9es de recherche OpenSearch. Gr\u00e2ce \u00e0 cela, on peut cr\u00e9er des petits plugins de recherche tr\u00e8s utiles pour son navigateur pr\u00e9f\u00e9r\u00e9. Format XML OpenSearch Les d\u00e9finitions des diff\u00e9rents \u00e9l\u00e9ments composant un XML OpenSearch nous aident \u00e0 composer notre propre plugin de recherche. Pour une installation standard [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[58,28,30,38,51,61,10,19],"tags":[],"class_list":["post-152","post","type-post","status-publish","format-standard","hentry","category-extension","category-browsing","category-code","category-firefox","category-html","category-productivite","category-tutorial","category-xml"],"_links":{"self":[{"href":"https:\/\/gatellier.be\/blog\/wp-json\/wp\/v2\/posts\/152","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gatellier.be\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gatellier.be\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gatellier.be\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/gatellier.be\/blog\/wp-json\/wp\/v2\/comments?post=152"}],"version-history":[{"count":0,"href":"https:\/\/gatellier.be\/blog\/wp-json\/wp\/v2\/posts\/152\/revisions"}],"wp:attachment":[{"href":"https:\/\/gatellier.be\/blog\/wp-json\/wp\/v2\/media?parent=152"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gatellier.be\/blog\/wp-json\/wp\/v2\/categories?post=152"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gatellier.be\/blog\/wp-json\/wp\/v2\/tags?post=152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}