Hugo : Opensearch

Article publié, le
3 minute(s) de lecture

Cet article contient 587 mots.
Source brute de l'article : MD

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 :

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"]

Astuce

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.

Info

Fichier : layouts/_default/index.opensearch.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
{{ 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.

Attention

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ément rss, 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.