Как я могу получить {{.GitInfo}} в HUGO?

Я хочу обновить параметр «Lastmod» для каждой страницы, используя дату последней фиксации git для этого файла содержимого. Поэтому мне нужно сначала установить "enableGitInfo = true", однако, когда я закодировал '{{.GitInfo}}' в своем html, я получил '<nil>' и {{.Lastmod}} напечатал '0001-01-01 00:00:00 +0000 UTC'.

Я написал в config.toml следующее:

enableGitInfo = true

[frontmatter]
date = ["date","lastmod"]
lastmod = [":git", "lastmod", "date"]
publishDate = ["publishDate", "date"]
expiryDate = ["expiryDate"]

Что я должен делать?


person Wenshang Nie    schedule 22.07.2019    source источник


Ответы (2)


Я успешно создал образец сайта, чтобы проверить это. Посмотрите, поможет ли вам какой-либо из этих шагов.

  1. hugo new site git-info-test
  2. cd git-info-test
  3. Добавьте enableGitInfo = true в config.toml файл
  4. Создайте layouts/index.html и добавьте {{.GitInfo | jsonify}}
  5. hugo new _index.md
  6. git init
  7. git add .
  8. git commit -m "Initial commit"
  9. hugo -D
  10. Вы должны увидеть что-то подобное в сгенерированном public/index.html
{
  "hash": "adf0bd47f37f413bf7c790a4c19c129cba6acf23",
  "abbreviatedHash": "adf0bd4",
  "subject": "Initial commit",
  "authorName": "John Smith",
  "authorEmail": "[email protected]",
  "authorDate": "2019-07-22T14:59:20-05:00"
}
person zwbetz    schedule 22.07.2019

Оглядываясь назад, это может показаться очевидным, но меня сбило с толку то, что вам нужен коммит с этим файлом, прежде чем появится {{ .GitInfo }}.

Он извлекает данные, связанные с файлом, поэтому, если вы перемещаете файл или создаете его впервые, вам понадобится фиксация для заполнения.

Предполагается, что у вас есть требования из Hugo docs:

  • Сайт Hugo должен находиться в каталоге с поддержкой Git.
  • Исполняемый файл Git должен быть установлен и в вашей системе PATH.
  • Функцию .GitInfo необходимо включить в вашем проекте Hugo, передав флаг --enableGitInfo в командной строке или установив для enableGitInfo значение true в файле конфигурации вашего сайта (config.toml).

Возможно, вы захотите создать в своем шаблоне некоторые функции резервного копирования, чтобы при предварительном просмотре вашего сайта Hugo для страниц, которые еще не зафиксированы, вы все равно видели дату:

{{ $date := now }}
{{ if .GitInfo }}
  {{ $date = .GitInfo.AuthorDate }}
{{ end }}

<div class="date">
  {{- $date.Format "January 02, 2006" -}}
</div>
person Tom Mertz    schedule 09.04.2020