#hugo #hugo-shortcode
#hugo #hugo-короткий код
Вопрос:
Как я могу повторно использовать короткий код в Hugo в другом коротком коде?
Я только нашел способ вложить короткие коды в markdown, но то, что я хочу сделать, это повторно использовать короткий код в определении другого короткого кода.
Ответ №1:
Нет, не в определении, но вы можете использовать вложенные короткие коды.
Вложенный подход является официальным (как обсуждалось здесь):
Вложенные короткие коды
Вы можете вызывать короткие коды внутри других коротких кодов, создавая свои собственные шаблоны, которые используют
.Parent
переменную.
.Parent
позволяет проверить контекст, в котором вызывается короткий код.
Смотрите шаблоны коротких кодов.
Смотрите иллюстрацию здесь: это обходной путь, а не один короткий код, использующий другой.
Ответ №2:
Вы можете сделать это с помощью partials в качестве обходного пути: вы можете передать свой повторно используемый шорткод на аутсорсинг в partial и вызывать его внутри своего шорткода так часто, как захотите. Для примера я собираюсь записать свою собственную строку в функцию нижнего регистра:
layout/partials/string-to-lower.html
:
{{- $stringOriginal := . -}}
{{- $stringLower := $stringOriginal | lower -}}
{{- return $stringLower -}}
layout/shortcodes/some-shortcode.html
:
{{- $myString := "TeST" -}}
{{- partial "string-to-lower" $myString -}}
{{< some-shortcode >}}
затем он будет напечатан test
в вашем контенте.
Если вы хотите использовать свой шорткод не только в других шорткодах, но и в своем контенте, тогда вы можете использовать шорткод-оболочку для вашего внешнего шорткода (частично):
layout/partials/string-to-lower.html
(код, переданный на аутсорсинг):
{{- $stringOriginal := . -}}
{{- $stringLower := $stringOriginal | lower -}}
{{- return $stringLower -}}
layout/shortcodes/string-to-lower.html
(оболочка):
{{- with .Get 0 -}}
{{- partial "string-to-lower" . -}}
{{- end -}}
Затем вы можете использовать {{< string-to-lower "TeST" >}}
в своем контенте или {{- partial "string-to-lower" "TeST" -}}
в своих шаблонах для печати test
.