Как преобразовать список значений в строку, разделенную запятыми, в шаблоне Hugo

#html #go #hugo

# #HTML #Вперед #hugo

Вопрос:

Я новичок в Hugo, ничего не знаю о GoLang, и я пытаюсь сделать следующее.

Проблема

У меня есть сайт Hugo, и в своих сообщениях я указываю keywords спереди, например:

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

В моем шаблоне я хочу добавить <meta> ключевые слова for, поэтому у меня есть:

 <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: неожиданно » (» в операнде

Ответ №1:

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

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

Комментарии:

1. Я собираюсь попробовать. Не могли бы вы помочь мне понять синтаксис? Что такое Go? И с чего начинается Hugo? Я имею в виду, что этот синтаксис {{ xxx }}`, который я понимаю, является Hugo. Безопасно ли понимать, что все, что попадает в эти скобки, является фактическим Go?

Ответ №2:

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

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

Комментарии:

1. Собираюсь попробовать, спасибо. Можете ли вы объяснить разницу между {{ xxx }} и {{- xxcx -}} ?

2. Обрезка пробелов!

3. Спасибо за ваш ответ. Причина, по которой я выбрал @Sefa, заключается в том, что это однострочник 🙂 Но ваш ценный и позволил мне понять несколько вещей. Спасибо.