Шорткоды — справочник для техписателей

Справочник шорткодов


1. Callout — предупреждение / важная информация

Подключение к платформе MAX для партнёров доступно для юрлиц и ИП, которые являются резидентами РФ
callout с переменной из assets/css/callout-colors.css
callout с переменной из assets/css/callout-colors.css
callout с переменной из assets/css/callout-colors.css
Callout с произвольным hex-кодом цвета

Параметры:

ПараметрОбязательныйОписание
colorнетЦвет фона блока. Можно передать имя CSS-переменной из assets/css/shortcodes/callout.css (например --callout-warning), либо произвольное CSS-значение: hex (#FF990020), rgb(...) и т.д. По умолчанию используется акцентный цвет темы
Пример{{< callout color="--callout-warning" >}} Текст {{< /callout >}}

Доступные именованные цвета (из assets/css/callout-colors.css):

ПеременнаяЦвет
--callout-infoсиний — информация
--callout-warningоранжевый — предупреждение
--callout-dangerкрасный — опасность
--callout-tipзелёный — совет
--callout-neutralсерый — нейтральный

Новые цвета можно добавить в файл assets/css/callout-colors.css в блок :root.


2. Карточки навигации


Подключение к платформе

Иконки: bot, partners, platform

cell-grid — обёртка-контейнер:

Параметров нет. Принимает один или несколько cell в теле

cell — одна карточка-ссылка:

ПараметрОбязательныйОписание
hrefдаURL для перехода
iconнетИконка. Допустимые значения: bot, partners, platform
variantнетCSS-вариант отображения
Пример{{< cell href="/docs/chatbots/" icon="bot" >}}Создание чат-бота{{< /cell >}}

3. FAQ — раскрывающийся вопрос-ответ

Как создать чат-бота?
Перейдите на платформу MAX для партнёров, выберите организацию и нажмите «Создать бота».
Сколько ботов можно создать?
Не более 5 ботов на одну организацию.

Параметры:

ПараметрОбязательныйОписание
summaryдаТекст вопроса / заголовка раскрывающегося блока. Поддерживает Markdown
Пример{{< details summary="Как создать чат-бота?" >}} Ответ {{< /details >}}

4. HTTP-метод бейдж

GET/messages

POST/messages

DELETE/subscriptions

PATCH/me

Методы: GET, POST, PUT, DELETE, PATCH

Параметры:

ПараметрОбязательныйОписание
methodдаHTTP-метод. Допустимые значения: GET, POST, PUT, DELETE, PATCH
pathдаПуть эндпоинта, например /messages
Пример{{< api-badge method="POST" path="/messages" >}}

5. API-параметры — «таблица без заголовка»

chat_id
integer
Уникальный идентификатор чата. Можно получить из объекта Chat или через метод GET /chats.

text
string
Текст сообщения. Максимальная длина — 4096 символов. Поддерживает Markdown и HTML форматирование.

attachments
AttachmentRequest[]optional
Массив вложений. Может содержать изображения, видео, аудио, файлы.

type
string
Тип вложения: image, video, audio, file

Структура:

Параметры api-param:

ПараметрОбязательныйОписание
nameдаНазвание параметра API
typeдаТип данных: string, integer, boolean, array, object и др.
requiredнет"false" — зелёная метка optional. Обязательные поля пишутся без метки
patternнетПаттерн значения, отображается моноширинным акцентным цветом под типом
collapsibleнет"true" — показать кнопку разворота поддерева; за строкой размещается api-param-children
Пример{{< api-param name="chat_id" type="integer" required="true" >}} Описание {{< /api-param >}}

6. Табы с кодом

BASH
curl -X POST "https://platform-api.max.ru/messages" \
 -H "Authorization: <token>" \
 -H "Content-Type: application/json" \
 -d '{"chat_id": 123, "text": "Hello"}'
PYTHON
import requests

requests.post(
"https://platform-api.max.ru/messages",
headers={"Authorization": token},
json={"chat_id": 123, "text": "Hello"}
)

code-tabs — контейнер с переключателем вкладок:

ПараметрОбязательныйОписание
позиционные (0…N)даНазвания вкладок в порядке следования, например "cURL" "Python"
Пример{{< code-tabs "cURL" "Python" >}} ... {{< /code-tabs >}}

code-tab — одна вкладка с кодом:

ПараметрОбязательныйОписание
langдаЯзык подсветки синтаксиса: bash, python, go, json и др.
Пример{{< code-tab lang="bash" >}} curl ... {{< /code-tab >}}

7. Блок кода

JSX
import requests

requests.post(
"https://platform-api.max.ru/messages",
headers={"Authorization": token},
json={"chat_id": 123, "text": "Hello"}
)

Параметры:

ПараметрОбязательныйОписание
langнетЯзык подсветки синтаксиса: bash, python, go, json, JSX и др. По умолчанию text
labelнетТекст в заголовке блока. По умолчанию берётся из lang
Пример{{% code-card lang="python" label="python" %}} print("hello") {{% /code-card %}}

8. Карточка с логотипами:

cards — контейнер для нескольких карточек:

card — одна карточка:

ПараметрОбязательныйОписание
titleнетЗаголовок карточки
hrefнетURL для перехода. По умолчанию #
imageнетПуть к изображению / логотипу
iconнетИконка из набора VK Icons
altнетАльтернативный текст для изображения. По умолчанию берётся из title
mediaнетВариант отображения медиа: "icon" (по умолчанию) или "logo"
targetнетАтрибут target ссылки, например "_blank"
relнетАтрибут rel ссылки. По умолчанию "noopener noreferrer"
Пример{{< card title="Jivo" href="https://www.jivo.ru" target="_blank" image="/assets/logo.png" alt="Jivo" media="logo" >}} Описание {{< /card >}}

9. Одинокая карточка.

Параметры: те же, что у card в пункте 8.


10. Просмотр изображения

Пример карточки бота Уменьшенное изображение (300px) Рамка + скругление + тень Мини-приложения — тематическое изображениеМини-приложения — тематическое изображение

Параметры:

ПараметрОбязательныйОписание
srcдаПуть к изображению. Поддерживает {theme} для переключения по теме: light/dark
altнетАльтернативный текст
titleнетВсплывающая подсказка
widthнетМаксимальная ширина изображения. Число без единиц → пиксели (300 = 300px), или с единицами (50%, 20rem)
borderнетРамка. Цвет (#DBE2E9, red) → 1px solid <цвет>; none; полный shorthand (2px dashed red); CSS-переменная (--border-color)
radiusнетСкругление углов. Число → px (16 = 16px), либо с единицами (50%, 0). Если задан border без radius — углы прямые (0)
shadowнетТень (0 4px 12px rgba(0,0,0,.12)) или CSS-переменная (--shadow-card)
classнетДоп. CSS-класс(ы) обёртки
Пример{{< image-zoom src="/assets/image.png" width="300" border="#DBE2E9" radius="16px" alt="Описание" >}}

Markdown-синтаксис (зум + декорация):

Все markdown-изображения автоматически поддерживают зум по клику. Декорация задаётся в поле title (третий параметр) в формате ключ:значение, пары разделяются ;:

![Описание](/assets/image.png 'width:300')
![Описание](/assets/image.png 'width:50%;border:#DBE2E9;radius:16px')
![С тенью](/assets/image.png 'border:none;shadow:0 4px 12px rgba(0,0,0,.12)')
![Тематическое](/assets/about/miniapps_{theme}.png 'width:400;border:#DBE2E9;radius:31px')

Доступные ключи: width, border, radius, shadow (правила нормализации те же, что у параметров шорткода). Число без единиц → пиксели. Если title НЕ начинается с ключ: — он трактуется как обычная всплывающая подсказка.

Описание

Подпись под одиночной картинкой

Если после картинки (markdown или шорткода {{< image-zoom >}}) следующей строкой написать курсивную подпись _текст_, она автоматически оформится как подпись: по центру, 14px, цвет вторичного текста темы — как на портале dev.max.ru. Работает и внутри {{< details >}}:

![](/assets/bot_card_{theme}.png)

_Данные и профиль бота_

Данные и профиль бота

Подпись можно писать и в той же строке сразу после картинки — ![...](src)_Подпись_ — оформление будет тем же.


11. Слайдер изображений

Карточка бота (светлая тема)
Карточка бота (тёмная тема)
Логотип бота

Лента изображений (layout="strip")

Горизонтальная прокручиваемая лента — несколько изображений видны одновременно, прокрутка нативная (с «прилипанием» к слайдам). Кнопки навигации и точки скрыты.

Карточка бота
Карточка бота
Логотип бота

Подпись под слайдером

Если сразу после {{< /slider >}} следующей строкой написать курсивную подпись _текст_, она автоматически оформится как подпись под слайдером: по центру, 14px, цвет вторичного текста темы — как на портале dev.max.ru:

{{< slider layout="strip" >}}
{{< slide src="..." alt="..." >}}
{{< /slider >}}

_Подпись под слайдером_

slider — контейнер слайдера:

ПараметрОбязательныйОписание
layoutнетslide (по умолчанию) — карусель по одному слайду; strip — прокручиваемая лента с нативным скроллом
borderнетРамка обёртки (цвет → 1px solid <цвет>, none, полный shorthand, CSS-переменная). Для strip обычно не задаётся
radiusнетСкругление обёртки. Число → px. Если border без radius — углы прямые
shadowнетТень обёртки или CSS-переменная
classнетДоп. CSS-класс(ы) обёртки

slide — один слайд с изображением:

ПараметрОбязательныйОписание
srcдаПуть к изображению
altнетАльтернативный текст
widthнетКастомная ширина (только slide-режим): 300px, 50%, 20rem. Центрируется, высота пропорциональна
min-widthнетМинимальная ширина слайда (только strip-режим): 300px, 50%. По умолчанию 50%
max-widthнетМаксимальная ширина изображения: 350px, 50%
max-heightнетМаксимальная высота изображения: 290px, 80vh
borderнетРамка изображения (те же правила нормализации, что у image-zoom)
radiusнетСкругление углов изображения. Число → px. Если border без radius — углы прямые
shadowнетТень изображения или CSS-переменная
classнетДоп. CSS-класс(ы) слайда
Пример{{< slide src="/assets/image.png" alt="Описание" min-width="300px" border="#DBE2E9" radius="31px" >}}

12. Расширенные возможности таблиц

Markdown-таблицы поддерживают дополнительный синтаксис для переноса строк, списков и объединения ячеек.

Переносы строк

В ячейках таблиц можно использовать <br> для переноса строк:

| Поле | Описание |
| --- | --- |
| `param` | Первая строка<br><br>Вторая строка |

Списки в ячейках

Если ячейка начинается с - или * , она преобразуется в маркированный список. Элементы разделяются <br> + маркер:

| Поле | Значения |
| --- | --- |
| `type` | - `DIALOG`<br>- `CHAT`<br>- `CHANNEL` |

Выравнивание колонок

Стандартный Markdown-синтаксис выравнивания в строке разделителя задаёт text-align для заголовка и ячеек колонки: :--- — влево, :---: — по центру, ---: — вправо:

| Поле | Количество |
| :--- | :---: |
| Значение 1 | 10 |

Colspan (горизонтальное объединение)

Пустая ячейка || объединяется с предыдущей непустой ячейкой, увеличивая её colspan:

| A | B | C | D |
| --- | --- | --- | --- |
| Объединённая на 3 колонки ||| Последняя |

Rowspan (вертикальное объединение)

Ячейка, начинающаяся с ^^, объединяется с ячейкой выше:

| Группа | Поле |
| --- | --- |
| Пользователь | `user.id` |
| ^^ | `user.name` |
| ^^ | `user.photo` |

13. Иконка

Вставляет SVG-иконку из набора VK Icons инлайном в текст. Цвет наследуется от текста (currentColor) — в ссылке иконка будет акцентной, в обычном тексте — цветом текста.

Успешно отправлено Открыть платформу

Цвет можно задать параметром color — любое CSS-значение цвета: #2688EB, red, var(--accent).

Синяя Красная Акцентная

Без параметра цвет наследуется от текста: в ссылке иконка акцентная, в обычном тексте — цвет текста.

Параметры:

ПараметрОбязательныйОписание
nameдаИмя иконки, как на сайте VK Icons, например check_circle
sizeнетРазмер иконки: 12, 16, 20, 24, 28, 32, 34, 36, 40, 44, 48, 56, 64, 96. По умолчанию 20
colorнетCSS-цвет иконки: #2688EB, red, var(--accent). По умолчанию — наследуется от текста
Пример{{< icon name="check_circle" size="16" color="#2688EB" >}}

Доступные иконки

Все уже скачанные иконки — в каталоге ниже. Если нужной нет, найдите её на vkcom.github.io/icons и просто вставьте шорткод с её именем — при следующей сборке (npm run dev или npm run build) SVG скачается автоматически.

Как вставить иконку:

  1. Найдите нужную иконку в каталоге выше (или на vkcom.github.io/icons) и скопируйте её имя.
  2. Вставьте шорткод {{< icon name="имя" size="16" >}} в нужную страницу.

Если сборка упала с ошибкой «icon not found» — проверьте имя по ссылке из ошибки и запустите npm run icons:sync. Не забудьте закоммитить скачанный SVG-файл из assets/icons/vk/.


Стандартный Markdown (без шорткодов)

Блок кода

def hello():
    print("Hello!")

Таблица

КодОписание
200Успешный запрос
400Некорректный запрос
401Неавторизован