Как преобразовать список значений в строку через запятую в шаблоне Hugo - PullRequest
1 голос
/ 16 апреля 2019

Я новичок в 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">

Как этого добиться?


Что я пробовал

Глядя на эту документацию , я попытался немного поиграть:

{{ 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": сбой синтаксического анализа: template: partials / header.html: 7: неожиданно "(" в операнд

Ответы [ 2 ]

5 голосов
/ 16 апреля 2019

Можете ли вы попробовать

<p>Keywords: {{ delimit .Keywords ", " }}</p>
1 голос
/ 16 апреля 2019

Выводить метатег только в том случае, если ключевые слова находятся в вашем поле зрения:

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