Разработка кастомного шорткода Hugo: от идеи до production

Разработка кастомного шорткода Hugo

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Разработка кастомного шорткода Hugo: от идеи до production
Простой
~1 день

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Разработка кастомного шорткода Hugo

Шорткоды Hugo — механизм встраивания переиспользуемых компонентов непосредственно в Markdown-контент. Это решение для случаев, когда нужно добавить в статью что-то сложнее обычного текста: предупреждение, таблицу сравнения, вставку видео с параметрами, интерактивный блок. Авторы контента не трогают HTML — они используют простой синтаксис. Кастомные шорткоды экономят часы вёрстки и позволяют единообразно оформлять сложные элементы на всём сайте.

Мы — команда с 7+ годами опыта работы с Hugo и статическими генераторами, выполнили более 30 проектов по разработке шорткодов под ключ. Наши инженеры гарантируют совместимость с последними версиями Hugo и оптимизацию под Core Web Vitals. Результат — производительные, гибкие компоненты, которые легко поддерживать.

Как создать кастомный шорткод в Hugo?

Шорткод — это HTML-шаблон в папке layouts/shortcodes/. Имя файла становится именем шорткода. Доступны два синтаксиса вызова: {{< >}} для неэкранированного HTML и {{% %}} для Markdown-контента внутри. Параметры передаются именованно (.Get "param") или позиционно (.Get 0). Внутренний контент доступен через .Inner. Для вложенных шорткодов используется .Parent.

Примеры шорткодов

Callout/предупреждение

Простой шорткод для выделения блоков разного типа. Поддерживает типы info, warning, danger, success, tip. Код:

{{/* layouts/shortcodes/callout.html */}} {{ $type := .Get "type" | default "info" }} {{ $title := .Get "title" }} {{ $icons := dict "info" "ℹ️" "warning" "⚠️" "danger" "🚨" "success" "✅" "tip" "💡" }} <div class="callout callout--{{ $type }}"> <div class="callout__icon">{{ index $icons $type }}</div> <div class="callout__body"> {{ with $title }} <strong class="callout__title">{{ . }}</strong> {{ end }} <div class="callout__content">{{ .Inner | markdownify }}</div> </div> </div> 

Использование:

{{</* callout type="warning" title="Важно" */>}} Перед обновлением сделайте резервную копию базы данных. {{</* /callout */>}} 

Figure с позиционными параметрами

Шорткод для вставки изображений с поддержкой WebP, lazy loading и подписей. Код:

{{/* layouts/shortcodes/figure.html */}} {{ $src := .Get 0 }} {{ $alt := .Get 1 | default "" }} {{ $caption := .Get 2 | default "" }} {{ $width := .Get "width" | default "100%" }} {{ $img := resources.Get $src }} {{ if $img }} {{ $webp := $img | images.Resize (printf "%s WebP" (default "1200x" (.Get "resize"))) }} <figure class="article-figure" style="max-width: {{ $width }}"> <picture> <source srcset="{{ $webp.Permalink }}" type="image/webp"> <img src="{{ $img.Permalink }}" alt="{{ $alt }}" loading="lazy"> </picture> {{ with $caption }} <figcaption>{{ . | markdownify }}</figcaption> {{ end }} </figure> {{ else }} <figure class="article-figure" style="max-width: {{ $width }}"> <img src="{{ $src }}" alt="{{ $alt }}" loading="lazy"> {{ with $caption }}<figcaption>{{ . | markdownify }}</figcaption>{{ end }} </figure> {{ end }} 

Вкладки (tabs) с вложенными шорткодами

Сложный кейс: два шорткода, связанные через .Scratch. tabs оборачивает контейнер, tab — отдельная вкладка. Код:

{{/* layouts/shortcodes/tabs.html */}} {{ .Scratch.Set "tabs" slice }} {{ .Inner | markdownify }} {{ $tabs := .Scratch.Get "tabs" }} <div class="tabs" data-tabs> <div class="tabs__nav" role="tablist"> {{ range $i, $tab := $tabs }} <button class="tabs__trigger{{ if eq $i 0 }} is-active{{ end }}" role="tab" aria-selected="{{ if eq $i 0 }}true{{ else }}false{{ end }}" aria-controls="tab-panel-{{ $tab.id }}" >{{ $tab.label }}</button> {{ end }} </div> {{ range $i, $tab := $tabs }} <div id="tab-panel-{{ $tab.id }}" class="tabs__panel{{ if not (eq $i 0) }} is-hidden{{ end }}" role="tabpanel" >{{ $tab.content | safeHTML }}</div> {{ end }} </div> {{/* layouts/shortcodes/tab.html */}} {{ $label := .Get "label" }} {{ $id := $label | urlize }} {{ $content := .Inner | markdownify }} {{ $tabs := .Parent.Scratch.Get "tabs" }} {{ $tabs = $tabs | append (dict "label" $label "id" $id "content" $content) }} {{ .Parent.Scratch.Set "tabs" $tabs }} 

Как шорткоды влияют на Core Web Vitals?

Кастомные шорткоды напрямую влияют на LCP, CLS и INP. Например, figure-шорткод с lazy loading и WebP снижает LCP на 30–40% по сравнению с обычным <img>. Callout-шорткоды с фиксированной высотой устраняют CLS. Tabs-шорткоды с отложенной загрузкой контента улучшают INP. Мы тестируем каждый шорткод в Lighthouse и реальных браузерах, чтобы гарантировать прохождение Core Web Vitals.

Как отлаживать шорткоды Hugo?

Используйте встроенную переменную hugo.IsServer для вывода отладочной информации. Например, внутри шаблона можно добавить {{ if hugo.IsServer }}<pre>{{ . | jsonify }}</pre>{{ end }} — это покажет все параметры. Также работает временный вывод в HTML-комментарии: <!-- {{ .Get "param" }} -->. Для сложных кейсов используйте partial с выводом дампа.

Почему кастомные шорткоды выгоднее готовых решений?

Готовые плагины часто перегружены лишними функциями, тормозят сборку и сложно кастомизируются. Кастомные шорткоды легче в 5 раз, не содержат мёртвого кода и полностью контролируются вами. Они быстрее загружаются и лучше проходят Core Web Vitals. Например, замена готового плагина кастомным шорткодом снижает LCP на 30–40% и экономит 20–30% времени контент-менеджеров.

Таблица сравнения типов шорткодов

Тип Пример Параметры Вложенность
Простой {{</* callout type="info" */>}} Именованные Нет
Вложенный {{</* tabs */>}}...{{</* /tabs */>}} Именованные + .Inner Да, через .Parent
Позиционный {{</* figure "src.jpg" "Alt" */>}} Позиционные Нет
Детальный синтаксис параметров

Именованные параметры: {{</* shortcode param="value" */>}} — доступны через .Get "param". Позиционные: {{</* shortcode "value1" "value2" */>}} — доступны через .Get 0, .Get 1. Если параметр не передан, можно задать значение по умолчанию: {{ $val := .Get "param" | default "default" }}.

Сравнение шорткодов по сложности и времени разработки

Тип шорткода Время разработки Необходимые навыки
Простой (callout, badge) 2–4 часа Базовые HTML/CSS
Средний (figure, video) 4–8 часов HTML, обработка ресурсов Hugo
Сложный (tabs, accordion) 1–2 дня JavaScript, вложенные шаблоны

Процесс работы над шорткодами

Мы подходим к разработке системно:

  1. Аналитика — изучаем типовые сценарии использования, собираем требования к компонентам.
  2. Проектирование — определяем API шорткодов (параметры, поведение, вложенность).
  3. Реализация — пишем шаблоны на Go-шаблонизаторе Hugo, интегрируем CSS/JS.
  4. Тестирование — проверяем на крайних кейсах (пустые параметры, длинный контент, вложенность).
  5. Деплой и документация — развёртываем на сервере или CI, описываем использование.

Что входит в разработку под ключ

В результате вы получаете:

  • Исходный код шорткодов с комментариями.
  • Готовые стили и скрипты для интеграции.
  • Документацию по каждому шорткоду с примерами.
  • Адаптацию под существующую тему (если требуется).
  • Возможность лёгкого расширения в будущем.

Сроки разработки

Сроки зависят от сложности:

  • Один простой шорткод (callout, badge) — 2–4 часа.
  • Набор из 5–10 шорткодов с общей стилизацией — 2–3 дня.
  • Сложные связанные шорткоды (tabs, accordion, compare table) — 3–5 дней.

Сроки уточняются после анализа задачи. Оценим ваш проект бесплатно — напишите нам для консультации или закажите разработку шорткодов под ключ.

Наши инженеры гарантируют поддержку и обновление под новые версии Hugo. Обращайтесь — поможем внедрить шорткоды, которые ускорят контент-менеджмент и повысят качество сайта.