Используйте переменную внутри Hugo контента

Я пытаюсь использовать переменную в содержимом статически сгенерированного сайта Хьюго. Например, содержимое выглядит следующим образом:

  1. Перейдите по ссылке вашего сайта ({{ .Site.BaseURL }})
  2. Введите свои учетные данные
  3. .....(бла бла бла)

Когда это визуализируется, часть {{ .... }} не обрабатывается... она остается такой же, как я описал выше. Я попробовал это с '$' также. Переменные в шаблонах, кажется, работают просто отлично. Нужно ли создавать шорткод для использования на страницах контента?

4 ответа

Решение

Похоже, шорткод - это способ сделать это. Для чего я стою, я изменил документ, чтобы он выглядел следующим образом:

  1. Перейдите на URL своего сайта ({{}})

В layouts/shortcodesЯ создал файл siteurl.html, Это выглядит следующим образом:

{{ .Page.Site.BaseURL }}

Мне нужно было добавить туда.Page, чтобы получить доступ к переменным сайта. Смотрите этот отчет о проблемах для более подробной информации.

В Hugo, если вы хотите использовать переменную в файле уценки (.md), вам сначала нужно создать шорткод для этого.

Вы можете выполнить следующие действия:-

создать шорткод

макеты / шорткоды / siteurl.html

{{ .Page.Site.BaseURL }}

Применение

content/post/myblogpost.md

---
# front-matter
---
1. Go to your site's url ({{< siteurl >}})
2. Enter your credentials
3. .....(blah blah blah)

результат

post/myblogpost.html

1. Go to your site's url (https://codingnconcepts.com)
2. Enter your credentials
3. .....(blah blah blah)

Источник: https://codingnconcepts.com/hugo/custom-shortcode-hugo/

Это попытка немного улучшить ответ @minitauros с помощью упрощенного примера поиска подраздела параметра (сайта) (также известного как обход дерева YAML, вывод элемента и т. д.).

Я бы хотел, чтобы у Hugo был синтаксис JSONPath или jq, и, очевидно, этот пример далеко не конкурирует ни с одним из решений.

config.yml

      params:
  mode: one
  support:
    mailing: info@example.net

layouts/shortcodes/param.html

      {{ $v := .Site.Params }}
{{ range (split (.Get 0) ".") }}{{ $v = index $v (.) }}{{ end }}
{{ $v }}

content/_index.md

      We are in mode {{< param "mode" >}}.

In case of turbulence, [reach the support](mailto:{{< param "support.mailing" >}}) for help.

У меня была такая же проблема, и этот пост мне помог.

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

В итоге я создал шорткод для загрузки запрошенного параметра сайта. Кто знает, эта информация может кому-то помочь.

/config.yml

params:
  appName: My app

/content/about.html

<p>My app's name is {{< param "appName" >}}</p>

/layouts/shortcodes/param.html

{{/* Usage: {{< param "siteParamName" }} */}}
{{ index .Site.Params (.Get 0) }}

Результат

<p>My app's name is My app</p>
Другие вопросы по тегам