dreamMyDream2014
2019-04-16 16:29
浏览 79
已采纳

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

I am new to Hugo, know nothing about GoLang and I am trying to do the following.

Problem

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?


What I have tried

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • douqian2957 2019-04-16 16:34
    已采纳

    Can you try

    <p>Keywords: {{ delimit .Keywords ", " }}</p>
    
    打赏 评论
  • dozc1071 2019-04-16 20:28

    Only output the meta tag when keywords are in your front matter:

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

相关推荐 更多相似问题