Шорткоды (shortcodes) - позволяют вставлять в markdown страницы заготовленные html блоки и передавать им параметры. В Hugo уже есть набор готовых шорткодов (см. документацию), которые позволяют например вставлять видео youtube или vimeo.

Следующий шорткод вставит в страницу iframe с youtube с указанными параметрами id и autoplay:

{{< youtube id="hzWl_j__KFU" autoplay="false" >}}

Параметры бывают позиционными и именованными.

Свои короткие коды

Пользователи Hugo могут самостоятельно создавать шортокоды под свои задачи. Добавим возможность вставлять в посты треки с Яндекс.Музыки.

Создадим файл layouts/shortcodes/yamusic.html

<iframe frameborder="0" 
        style="border:none;width:100%;height:180px;" width="100%" height="180" 
        src="https://music.yandex.ru/iframe/#track/{{ .Get 0 }}">
</iframe>

{{ .Get 0 }} - эта конструкция использует позиционный параметр и подставит в iframe первый (отсчет с нуля) параметр который будет передан шорткоду.

Обратите внимание на имя файла yamusic.html, yamusic - и будет именем короткого кода. Теперь чтобы вставить трек в страницу можно написать так:

{{< yamusic 51437970 >}}

Допишем шорткод чтобы можно было использовать и позиционные и именованные параметры. Хотя в одним параметром это не очень нужно, но для примера подойдет.

<iframe frameborder="0" 
        style="border:none;width:100%;height:180px;" width="100%" height="180" 
        {{ if .IsNamedParams }}
            src="https://music.yandex.ru/iframe/#track/{{ .Get "id" }}">
        {{ else }}
            src="https://music.yandex.ru/iframe/#track/{{ .Get 0 }}">
        {{ end }}
</iframe>

{{ if .IsNamedParams }} - определяем используются ли именованные параметры. {{ .Get "id" }} - получение доступа к параметру по имени.

После изменений короткий код можно использовать и так:

{{< yamusic id="51437970" >}}

И результат: