Использовать короткий код в определении короткого кода

#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 .