Description
Opensearch est un format de description qui permet à un site de décrire un moteur de recherche pour lui-même, afin que toute application cliente, tel un navigateur web, puisse faire une recherche dans le site en question.
La plupart des navigateurs vous proposeront l’ajout de votre site en tant que moteur de recherche si vous gérez l’autopublication .
Hugo, par défaut, ne génére pas de descriptif Opensearch. Nous allons devoir modifier la configuration pour créer un nouveau format de sortie personnalisé.
Documentation
Un petit tour sur la documentation officielle Hugo :
Ainsi que sur la documentation officielle d’Opensearch :
Configuration
- Le fichier de configuration principal :
config.toml
Il est nécessaire de modifier le fichier de configuration pour :
- créer un nouveau type de média
- créer un nouveau format de sortie
- créer le modèle pour le fichier Opensearch.
MediaType
Le type mime lié au format de description d’Opensearch est : application/opensearchdescription+xml
.
Hugo >= 0.20
Depuis Hugo 0.20, il faut ajouter :
[mediaTypes]
[mediaTypes."application/opensearchdescription+xml"]
suffix = "xml"
Là, nous avons donc implémenté un nouveau type de format ayant pour mime type : application/opensearchdescription+xml
, et pour nom d’extension : xml
.
Hugo >= 0.44
Depuis Hugo 0.44, pour que cela fonctionne correctement il faut ajouter :
[mediaTypes]
[mediaTypes."application/opensearchdescription+xml"]
suffixes = ["xml"]
suffix
en suffixes = ['xml']
!OuputFormat
La déclaration du format de sortie, à ajouter :
[outputs]
[outputFormats.OpenSearch]
baseName = "opensearch"
isHTML = false
isPlainText = false
mediaType = "application/opensearchdescription+xml"
noUgly = true
Puis, il faut ajouter "OpenSearch"
à votre variable home
, tel que :
[outputs]
home = ["HTML", "OpenSearch"]
Template
Le modèle peut simplement être créé dans le répertoire layouts/_default/index.opensearch.xml
.
- Si le site est multilangue, les liens alternatifs vers la version de langue correspondante à l’entrée du site sont générés.
{{ printf `<?xml version="1.0" encoding="utf-8" ?>` | safeHTML }}
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:ie="http://schemas.microsoft.com/Search/2008/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<Attribution>© {{ $.Date.Format "2006" | safeHTML }} {{ site.Author.name }}; http://creativecommons.org/publicdomain/zero/1.0/legalcode.{{ site.Language.Lang }}</Attribution>
<Contact>{{ site.Author.email | safeHTML }}</Contact>
<Description>{{ i18n "opensearchDescription" }}</Description>
<Developer>{{ site.Author.name | safeHTML }}</Developer>
<InputEncoding>utf-8</InputEncoding>
<Image width="64" height="64" type="image/png">{{ site.BaseURL }}img/Logo-64px.png</Image>
<Image width="16" height="16" type="image/vnd.microsoft.icon">{{ site.BaseURL }}img/favicon.ico</Image>
<Language>{{ site.LanguageCode }}</Language>
<LongName>{{ site.Title }} :: {{ site.Language.Lang }}</LongName>
<OutputEncoding>UTF-8</OutputEncoding>
<ShortName>Websearch</ShortName>
<SyndicationRight>open</SyndicationRight>
<ie:PreviewUrl type="text/html" method="GET" template="{{ site.BaseURL }}{{ site.Language.Lang }}/tags/{searchTerms}/"/>
<moz:SearchForm>{{ site.BaseURL }}{{ site.Language.Lang }}/tags/{searchTerms}/</moz:SearchForm>
<Url template="{{ site.BaseURL }}{{ site.Language.Lang }}/tags/{searchTerms}/" type="text/html" />
<Url rel="self" template="{{ site.BaseURL }}opensearch.xml" type="application/opensearchdescription+xml" />
</OpenSearchDescription>
autopublication
L’autopublication est la méthode qui permet d’informer les clients web du format de description Opensearch.
title
corresponde à celle de
l’élément ShortName
!Atom
Si vous avez modifié votre configuration de Hugo pour générer un flux Atom il vous faudra le modifier pour ajouter ce qui suit :
<link href="{{ site.BaseURL }}/opensearch.xml" rel="search" type="application/opensearchdescription+xml" title="Websearch" />
HTML
Ajouter un élément link
, tel que :
<link rel="search" href="/opensearch.xml" title="Websearch" type="application/opensearchdescription+xml">
RSS
Si vous générez votre flux RSS , veillez à le modifier pour ajouter :
- la déclaration de l’attribut
xmlns:atom="http://www.w3.org/2005/Atom"
dans votre élémentrss
, tel que :
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
- afin de pouvoir déclarer un élément
atom:link
, tel que :
<atom:link href="{{ site.BaseURL }}/opensearch.xml" rel="search" type="application/opensearchdescription+xml" title="Websearch" />
Remerciements
Encore un merci sincère @solene qui m’a fait connaître Opensearch.