La zone de recherche de FireFox est bien pratique, difficile de remettre cela en cause. Son seul problème est qu'il n'y a étrangement aucun moyen en standard pour ajouter des requêtes un peu exotiques. Voici donc comment faire.
Dans le temps, il existait une extension pour faire ce qui suit, Open Search Fox, mais elle n'a pas été portée avec FireFox 3.0 et tout semble indiquer qu'elle ne le sera pas. Alors même s'il existe une autre extension du même genre ou si quelqu'un se décide à porter celle-là, autant savoir faire sans. Ceci d'autant plus que c'est assez simple.
Histoire de prendre un exemple, disons que je veuille utilisez les fonctions étendues de Google pour rechercher un projet Drupal particulier. Cela corresponds à taper dans Google site:drupal.org inurl:project webdav.
Lorsque vous avez lancé cette requête, vous obtenez avec la page de résultat, dans la barre d'adresse, quelque chose commençant par http://www.google.fr/search?q=site%3Adrupal.org+inurl%3Aproject+webdav. Oubliez le reste, cela n'a pas d'importance. Nous constatons donc que l'URL de la recherche est http://www.google.fr/search, qu'il y a un paramètre nommé q et que sa valeur est site%3Adrupal.org+inurl%3Aproject+webdav. Dans cette valeur, webdav sera par la suite à remplacer par le nom du projet que l'on va effectivement rechercher. Le début sera toujours le même.
Pour mettre cette requête dans Firfox, il faut commencer par trouver le dossier de votre profile, généralement ~/.mozilla/firefox/XXXXX.default. Là se trouve le répertoire qui nous intéresse, searchplugins. Vous allez y créer un fichier drupal-projects.xml :
Avant de redémarrer FireFox, quelques explications s'imposent. Déjà ShortName représente comme on se l'imagine le nom qui apparaîtra dans la liste déroulante de FireFox. InputEncoding permet de passer à Google une chaînes avec les accents correctement encodés. Et enfin Image pointe sur l'URL de l'icône qui va illustrer notre requête.
La partie intéressante arrive avec Url. Il s'agit d'invoquer la méthode GET sur une URL donnée par l'attribut Template. Cela implique qu'il est parfaitement possible d'utiliser la méthode POST qui peut être nécessaire pour certain sites qui utilisent des formulaires de recherche complexes.
Ici l'URL de base de la recherche est donc http://www.google.fr/search. Maintenant, il reste encore à envoyer à Google le paramètre, q, c'est le rôle de la balise Param.
Comme nous l'avons vu plus haut, la valeur de q est composée de site%3Adrupal.org+inurl%3Aproject+, suivi du nom du projet à chercher. Ce nom est ici {searchTerms} qui indique à FireFox de placer là les mots que l'utilisateur a tapé avant de lancer la recherche. FireFox s'assure de la bonne conversion de la phrase, en convertissant, entre autre, les espaces par des +.
Et voilà, c'est tout. Redémarrez FireFox et la nouvelle recherche devrait apparaître prête à être utilisée.
Ici, nous donnons l'URL de l'icône dans la balise Image, mais il est aussi possible de directement intégrer cette image au fichier XML. Pour cela il faut encoder le fichier d'origine en un fragment de texte encodé base64. Pas évident. Heureusement, il existe de petits outils en ligne comme ici, à qui l'on donne l'URL et qui nous renvoient un bloc de texte à coller directement dans le contenu de la balise Image. Dans notre cas, nous utiliserons http://drupal.org/misc/favicon.ico.
Cette syntaxe n'est pas une exclusivité de FireFox. En réalité ce dernier ne fait qu'exploiter le format OpenSearch qui a été conçu par A9, une filiale d'Amazon. Ce format permet non seulement d'ajouter des automates de recherche à un navigateur comme nous l'avons fait ici, mais aussi, et surtout, donne à un site la possibilité d'indiquer à un navigateur le moteur de recherche qui lui est le plus adapté. Comme pour les flux Atom ou RSS, cela se fait très simplement en incluant dans chaque page du site une balise link, comme par exemple :
Du coup, lorsque le navigateur affiche cette page, il découvre cette balise et peut vous proposer d'ajouter ce nouveau moteur de recherche. Vous pouvez tester cela avec ce site. Allez dans la zone de recherche, déroulez la liste et vous devriez voir apparaître Ajouter "Artisan Numérique".
- répondre
Roultabie , le 30 September, 2008 - 12:54Article très intérressant, comme toujours.
Mais le "SearchForm" il sert à quoi, (je ne n'ai pas la possibilité de tester actuellement) puisque l'on envoie la requête à google?
- répondre
Dab, le 30 September, 2008 - 13:31Merci pour l'astuce
C'est vrai que l'intégration d'une image codée en base64 directement dans un fichier source limite le nombre des requêtes. Cela peut aussi s'utiliser dans de l'HTML avec une balise du style <img src="data:image/gif;base64,données_de_l_image_codee_en_base64">.
- répondre
Ulhume, le 30 September, 2008 - 15:30@Roultabie coquille!! je vire
- répondre
Ulhume, le 30 September, 2008 - 15:34@Dab yep, du CSS ou du JS aussi d'ailleurs. Moi je savais pas, j'ai découvert cela sur la page du gars qui a fait l'encodeur et j'avoue que ça me laisse songeur. C'est sur que ça va alourdir la page mais réduire le nombre de requêtes et donc le délai de chargement. L'autre qui qui m'ennuie est que les contenus textes sont compressés par apache, ce qui n'est pas le cas à ma connaissance de data:... Sauf s'il est possible d'enquiller les encodages.
- répondre
Layer973 , le 30 September, 2008 - 15:58Bien à savoir, mais ca fait longtemps que j'ai viré la recherche.
En effet on peut faire ce genre de chose à partie de la barre d'adresse.
Je crées un marque page:
le "%s" représente la recherche
Je n'ai plus qu'à rentrer "drup_proj webdav" dans la barre d'adresse pour obtenir le même résultat.
En plus je conserve une url lisible sans les "%3A"
J'ai ainsi remplacé toutes mes recherches et gagné de la place.
- répondre
plouf , le 30 September, 2008 - 16:39Sinon il y a aussi l'extension Add to Search Bar (https://addons.mozilla.org/fr/firefox/addon/3682) qui fonctionne bien...
- répondre
Ulhume, le 30 September, 2008 - 16:41@Layer973 Ah je connaissais pas ça ! Intéressant, je croyais que cette possibilité était réservée à konq. Ceci dit, tu perds aussi du coup l'intérêt même d'OpenSearch c'est un peu dommage non ? Ce qui serait sympa c'est que Firefox permette de faire la même chose en exploitant sa liste de moteurs.
- répondre
Dab, le 30 September, 2008 - 16:43Bon certes lorsque l'on met en oeuvre un cache l'intérêt d'intégrer des images/CSS/JS au code HTML se réduit.
Pour le coup de la compression Apache, je ne suis pas certain de te suivre ... apache compresse tout ce qu'on lui donne à manger, balise comprises non ? Pour ma part ce n'est pas frontal http qui compresse mais l'application elle-même
- répondre
Ulhume, le 30 September, 2008 - 16:44@plouf Moui, alors moins j'ai d'extensions, mieux je me porte. Surtout pour un truc qui va me servir une fois tout les lunes bleues. Ceci dit, merci pour la référence même si j'avais bien dit en introduction que justement je cherchais à m'en passer
- répondre
Ulhume, le 30 September, 2008 - 16:47@LOL Ah oui, j'y avais pas pensé à celle là, moi j'étais déjà en train de chercher un moyen de compresser les data url
))) Ban, je vais aller goûter, je crois que ça s'impose 
Tu parles de catapulse ?
- répondre
Ulhume, le 30 September, 2008 - 16:51@Dab en tout cas cette histoire m'a donné une idée qui marche pas mal, re-encoder mes images à la volées dans un cache en PNG indexées. Je viens de gagner 30ko sur la home comme cela. Faudrait que je fasse la même chose avec les gravatars...
- répondre
Dab, le 30 September, 2008 - 18:11...Tu parles de catapulse ? ...
Là je tente la mise en cache par portion de page ( en gros certains <div>) + page complète bien sûr : hmmmm prise de tête 
Oui quoi d'autres
Ré-encoder les images à la volée, pas con ça (j'ajoute à TODO ). As tu vérifié si le rapport poids/temps d'éxécution est intéressant ? (avec ab ?)
Sinon quelle commande utilises tu pour réencoder tes png ? c'est en php ?
- répondre
Ulhume, le 30 September, 2008 - 18:24@Dab yep c'est en PHP (librairie GD). Le rapport ne peut être qu'intéressant vu que j'utilise un cache. Les images sont converties la première fois puis sont restockées physiquement, ensuite il n'y a plus de traitements. En gros toutes mes images passent par un get_image(chemin, taille) qui renvoie dans tous les cas un chemin depuis le cache. Du coup les icônes sont stockées en 128x128 et converties aux bonnes résolutions/encodages uniquement au premier affichage.
Pour le cache de pages, la bonne option est de se placer à la sortie de ton flux gzipé. Tu stockes le résultat en base sur la clef de l'url et tu ajoutes un timestamp de mise à jour toutes les 5 minutes disons. Cacher par portions c'est assez bordélique à gérer et cela ne peut se faire que derrière un cache global à mon sens. Il est rare que quelque chose de significatif bouge sur une page dans un intervale de 5 minutes mis à part les commentaires. Dans ce cas, tu invalides juste le cache et ça roule.
- répondre
Dab, le 30 September, 2008 - 19:56OK Merci pour ces précisions. J'ai déjà un cache pages fonctionnel mais je souhaite aller plus loin, pourquoi tout recalculer si on peut s'en passer.
Va juste falloir être stricte dans la gestion du flux.
- répondre
Ulhume, le 1 October, 2008 - 15:58@Disons que c'est pas le compliqué à mettre en oeuvre et ça fonctionne bien. Après pour les caches de second niveau c'est une autre histoire...
- répondre
Roultabie , le 2 October, 2008 - 20:10Ah! Merci!
Enfin grace à la combinaison F6 et ces marques pages, je me libère un peu plus de la souris
Bonne asctuce, et me voilà à supprimer ma barre de recherche!
- répondre
Layer973 , le 2 October, 2008 - 21:25Ben c'est un prêté pour un rendu. Je ne connaissais pas F6.
Voila qui va me libérer un peu plus de ma souris.
Poster un nouveau commentaire