Je m’intéresse à la technologie, aux nouveaux gadgets, aux réseaux, au matériel, etc. Par conséquent, au cours des deux dernières années, j’ai compilé une petite liste de sites qui fournissent des informations fiables et de qualité.

Parce que j’aime partager des choses intéressantes, je me suis dit : ‘Pourquoi ne pas donner une page aux flux rss de mes sites préférés ?’ C’est donc le début d’une nouvelle aventure.

Qu’est-ce qu’un flux RSS ? Fondamentalement, les flux rss sont des listes mises à jour en temps réel du contenu d’un site. Le format du flux est standardisé, donnant un titre, un lien et une brève description pour chaque élément de la liste.

Ces listes sont utilisées avec une application d’agrégation, où vous pouvez ajouter des flux RSS de plusieurs sites vous donnant une vue globale de l’actualité de votre choix.

Après quelques recherches sur la façon d’implémenter mon idée dans le framework Hugo, j’ai trouvé que cela pouvait être fait grâce aux shortcodes.Les shortcodes sont comme des fonctions qui peuvent être appelées dans votre page. Voici la page où j’ai trouvé la fonction que je vais utiliser : gohugo.io

{{ with resources.GetRemote "https://example.com/rss.xml" | transform.Unmarshal }}
    {{ range .channel.item }}
        <strong>{{ .title | plainify | htmlUnescape }}</strong><br />
        <p>{{ .description | plainify | htmlUnescape }}</p>
        {{ $link := .link | plainify | htmlUnescape }}
        <a href="{{ $link }}">{{ $link }}</a><br />
        <hr>
    {{ end }}
{{ end }}

Nous devons d’abord créer le fichier de fonction nommé rss.html dans le dossier shortcodes, vous pouvez voir la structure hiérarchique ci-dessous :

.
|-- archetypes
|-- assets
|-- content
|   `-- post
|-- data
|-- layouts
|   |-- _default
|   |-- partials
|   `-- shortcodes

Ensuite, copiez la fonction dans le nouveau fichier où nous la modifierons selon nos besoins. Nous utiliserons cette fonction avec plusieurs flux RSS, il sera donc préférable de transformer l’adresse en variable:

// Déclarez la nouvelle variable et son contenu
{{ url :=.Get "url" }}
{{ with resources.GetRemote $url | transform.Unmarshal }}

Vous pouvez maintenant enregistrer votre fichier et essayer votre shortcode comme suit :

// Normalement, il n'y a pas d'espace après les doubles parenthèses. 
// Mais il a continué à exécuter le shortcode.
{{ < rss url="https://cabivr.net/index.xml" >}}
# ^ no space!! ATTENTION !!

La fonction telle quelle affiche tous les articles du site {{ range .channel.item }}, Je veux montrer plusieurs sites et je pense que les 3 derniers articles suffisent donc j’ai modifié le code en ceci :

{{ range first 3 .channel.item }}

De plus, j’ai trouvé que la description <p>{{ .description | plainify | htmlUnescape }}</p> ce n’est pas toujours standard, et pourrait être une page entière dans certains cas.

J’ai donc ajouté une autre fonction pour tronquer le paragraphe à seulement 160 caractères. Cela donne environ deux lignes.

<p>{{ .description | plainify | htmlUnescape | truncate 160 }}{{ if .Truncated }}...{{ end }} </p>

Et voici la forme finale du contenu dans mon fichier rss.html :

{{ $url := .Get "url" }}
{{ with resources.GetRemote $url | transform.Unmarshal }}
    {{ range first 3 .channel.item }}
        <strong>{{ .title | plainify | htmlUnescape }}</strong><br />
        <p>{{ .description | plainify | htmlUnescape | truncate 160 }}{{ if .Truncated }}...{{ end }} </p>
        {{ $link := .link | plainify | htmlUnescape }}
        <a href="{{ $link }}">{{ $link }}</a><br />
        <hr>
    {{ end }}
{{ end }}

J’espère que cela a été utile. Consultez la section “Feeds” pour les derniers articles.