I am new to Hugo, know nothing about GoLang and I am trying to do the following.
I have a Hugo site, and in my posts, I specify keywords
in the front matter like:
---
author: Andrea Tino
keywords:
- language
- image
- fun
---
In my template, I want to add a <meta>
for keywords, so I have:
<head>
<meta charset="utf-8">
{{ if .Keywords }}
<meta name="keywords" content="{{ .Keywords }}">
{{ end }}
<title>{{ .Title }} | {{ .Site.Title }}</title>
</head>
The problem, of course, is that I get this in the output:
<head>
<meta charset="utf-8">
<meta name="keywords" content="[language image fun]">
<title>{{ .Title }} | {{ .Site.Title }}</title>
</head>
While my objective is to get:
<meta name="keywords" content="language, image, fun">
How to achieve this?
Looking at this documentation, I have tried to play a little:
{{ if .Keywords }}
<meta name="keywords" content="{{ .Keywords | println }}">
{{ end }}
Also tried:
{{ if .Keywords }}
<meta name="keywords" content="{{ .Keywords | printf "%s" }}">
{{ end }}
They do not work. Also tried:
{{ if .Keywords }}
<meta name="keywords" content="{{ println(strings.Join(.Keywords, ", ")) }}">
{{ end }}
This last one causes an error:
Error: "/Users/me/Git/myproj/themes/mytheme/layouts/partials/header.html:7:1": parse failed: template: partials/header.html:7: unexpected "(" in operand
Can you try
<p>Keywords: {{ delimit .Keywords ", " }}</p>
Only output the meta tag when keywords are in your front matter:
{{- with delimit .Keywords "," -}}
<meta name="keywords" content="{{.}}">
{{ end }}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With