如何在Hugo模板中将值列表转换为逗号分隔的字符串

时间:2019-04-16 16:29:44

标签: html go hugo

我是Hugo的新手,对GoLang一无所知,我正在尝试执行以下操作。

问题

我有一个Hugo网站,在我的帖子中,我在前面的问题中指定了keywords,例如:

---
author: Andrea Tino
keywords:
- language
- image
- fun
---

在我的模板中,我想为关键字添加<meta>,所以我有:

<head>
    <meta charset="utf-8">
    {{ if .Keywords }}
    <meta name="keywords" content="{{ .Keywords }}">
    {{ end }}
    <title>{{ .Title }} | {{ .Site.Title }}</title>
</head>

问题当然是我在输出中得到了:

<head>
    <meta charset="utf-8">
    <meta name="keywords" content="[language image fun]">
    <title>{{ .Title }} | {{ .Site.Title }}</title>
</head>

我的目标是获得:

<meta name="keywords" content="language, image, fun">

如何实现?


我尝试过的

看着这个documentation,我尝试了一下:

{{ if .Keywords }}
<meta name="keywords" content="{{ .Keywords | println }}">
{{ end }}

也尝试过:

{{ if .Keywords }}
<meta name="keywords" content="{{ .Keywords | printf "%s" }}">
{{ end }}

它们不起作用。还尝试过:

{{ if .Keywords }}
<meta name="keywords" content="{{ println(strings.Join(.Keywords, ", ")) }}">
{{ end }}

最后一个导致错误:

  

错误:“ / Users / me / Git / myproj / themes / mytheme / layouts / partials / header.html:7:1”:解析失败:模板:partials / header.html:7:意外的“(”操作数

2 个答案:

答案 0 :(得分:5)

您可以尝试

<p>Keywords: {{ delimit .Keywords ", " }}</p>

答案 1 :(得分:1)

仅当关键字摆在首位时才输出meta标记:

{{- with delimit .Keywords "," -}}
  <meta name="keywords" content="{{.}}">
{{ end }}