【问题标题】:How to convert a list of values into comma separated string in Hugo template如何在 Hugo 模板中将值列表转换为逗号分隔的字符串
【发布时间】:2019-09-06 19:53:31
【问题描述】:

我是 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:意外“(”在操作数

【问题讨论】:

    标签: html go hugo


    【解决方案1】:

    仅当关键字在您的前面时才输出元标记:

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

    【讨论】:

    • 试试这个谢谢。你能解释一下{{ xxx }}{{- xxcx -}}之间的区别吗?
    • Trimming 空格!
    • 感谢您的回答。我选择@Sefa's 的原因是因为它是单行的 :) 但你的很有价值,让我了解了一些事情。谢谢。
    【解决方案2】:

    你可以试试

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

    【讨论】:

    • 我要试试这个。你能帮我理解语法吗?什么是围棋?雨果从哪里开始?我的意思是,我理解的这个 {{ xxx }}`` 语法是 Hugo。是否可以安全地理解这些括号内的内容是实际的 Go?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    相关资源
    最近更新 更多