Hugo v0.55.x Ошибки при устаревании - ".File.BaseFileName" на нулевом объекте - PullRequest
0 голосов
/ 16 мая 2019

Я экспериментировал с поиском исправления новой ошибки устаревания, которая возникает в Hugo версии 0.55.5:

.File.BaseFileName on zero object. Wrap it in if or with: {{ with .File }}{{ .BaseFileName }}{{ end }}

Два затронутых фрагмента рассматриваемого кода:

{{ $header := print "_header." .Lang }}
    {{ range where .Site.Pages "File.BaseFileName" $header }}
    {{ .Content }} 
    {{else}}
  {{ if .Site.GetPage "page" "_header.md" }}
    {{(.Site.GetPage "page" "_header.md").Content}}
  {{else}}
    <a class="baselink" href="{{.Site.BaseURL}}">{{.Site.Title}}</a>
  {{end}}
{{end}}

&& нижний колонтитул:

{{ $footer := print "_footer." .Lang }}
{{ range where .Site.Pages "File.BaseFileName" $footer }}
  {{ .Content }}
{{else}}
  {{ if .Site.GetPage "page" "_footer.md" }}
    {{(.Site.GetPage "page" "_footer.md").Content}}
  {{end}}
{{end}}

Я пытался по-разному обернуть эти сегменты кода {{ with .File }}, как следует из сообщения об ошибке, но мне не нравится то, что я придумал. Например, если я поместил окружающий бит кода вокруг оператора {{ range ... }}, я получу ошибку: can't evaluate field Site in type source.File. Если бы кто-то мог помочь выяснить, где следует разместить {{ with .File }}, это было бы очень полезно.

1 Ответ

0 голосов
/ 16 мая 2019

Вы получаете эту ошибку

не может оценить поле Сайт в типе source.File

Поскольку контекст изменяется, когда внутри with.Чтобы исправить это, оберните ваш код в {{ with .File }}, как вы упомянули.

Затем везде, где вы используете .Site, замените его на site.

Затем убедитесь, что вы используете Hugo версии 0.53.0 или выше, чтобы было доступно ключевое слово site.

...