• Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
      • Markdown
      • Аналитика страниц
    • Фреймы
      • Блоки
      • Бинды data-op-bind
      • Повторитель onpress/repeat
      • Сборка и копии
      • Фреймы в Markdown
      • Фреймы с данными
      • Готовые фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
  • КЕЙСЫ
    • Создание сайтов
    • Работа с контентом
    • Фреймы и данные
    • Настройка сайта
    • Перевод страницы
  • ПРИЛОЖЕНИЯ
    • Приложения
      • Закрытый доступ
      • Данные приложения
      • Внешние данные
      • Демо
    • Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
    • Фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
    • Редиректы
    • Кредиты и автоматизация
    • Входящие
    • Кросспостинг
OnPress OnPress
  • Документация
  • Контакты
Войти
Обзор Справочник API
    • Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
      • Markdown
      • Аналитика страниц
    • Фреймы
      • Блоки
      • Бинды data-op-bind
      • Повторитель onpress/repeat
      • Сборка и копии
      • Фреймы в Markdown
      • Фреймы с данными
      • Готовые фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
  • КЕЙСЫ
    • Создание сайтов
    • Работа с контентом
    • Фреймы и данные
    • Настройка сайта
    • Перевод страницы
  • ПРИЛОЖЕНИЯ
    • Приложения
      • Закрытый доступ
      • Данные приложения
      • Внешние данные
      • Демо
    • Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
    • Фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
    • Редиректы
    • Кредиты и автоматизация
    • Входящие
    • Кросспостинг
Устройство сайта
Markdown
Открыть в ИИ
  • Открыть в ChatGPT
  • Открыть в Claude
  • Открыть в Gemini
  • Открыть в Perplexity
  • Открыть в Grok
  • Открыть в DeepSeek

Меню

Меню — это пункты навигации в шапке и подвале сайта. Это системные данные: с ними работают через один эндпоинт /data/menu.{область}, где область — header для шапки или footer_1, footer_2, footer_3 для колонок подвала. Кроме них можно завести собственное меню, например для сайдбара документации: это пользовательские данные с любым именем, например menu.docs.

Меню хранится как JSON-список пунктов, поэтому AI-агенту не нужна консоль: он читает список, правит его и записывает обратно, и новое меню сразу появляется на всех страницах сайта.

info

Во всех примерах API — https://onpress.pro/api/v2, SITE — id сайта (SITE_ID), OP_TOKEN — токен op_XXXX. Полный перечень эндпоинтов — в справочнике API.

Прочитать

GET /data/menu.{область} отдаёт пункты меню деревом. Например, меню шапки:

curl -s "$API/site/$SITE/data/menu.header" -H "Authorization: Bearer $OP_TOKEN"
ПолеЧто это
titleподпись пункта
urlадрес пункта
object_idid страницы, если пункт ведёт на страницу сайта
childrenвложенные пункты

Изменить

PUT /data/menu.{область} заменяет меню целиком, поэтому в запросе передают весь список пунктов. Пункт на страницу сайта задают как {"page": id или путь}: он следует за страницей, даже если её адрес изменится. Внешнюю ссылку задают как {"url": …}, подпись — в title, вложенные пункты — в children. Например, меню шапки с вложенным пунктом и внешней ссылкой:

curl -s -X PUT "$API/site/$SITE/data/menu.header" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"items": [
        {"page": "/docs/", "title": "Документация", "children": [{"page": "/docs/v2/ru/guides/quickstart/"}]},
        {"url": "https://example.com", "title": "Партнёры", "target": "_blank"}
      ]}'

Создать меню

Если в области ещё нет меню, запись отвечает 404 menu_not_assigned. Тогда меню создают через POST /menus: с location оно сразу встаёт в нужную область. Например, меню шапки из двух пунктов:

curl -s -X POST "$API/site/$SITE/menus" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"name": "Шапка", "location": "header", "items": [
        {"page": "/docs/", "title": "Документация"},
        {"url": "https://example.com", "title": "Партнёры"}
      ]}'

Поставить готовое меню в другую область можно через PUT /menus/{id}/location, снять — через DELETE /menus/{id}/location. Правка отдельных пунктов, порядок и удаление меню описаны в справочнике API.

Языки

У каждого языка своё меню. Чтобы сделать меню на другом языке, прочитайте исходное меню с параметром lang, например ?lang=ru, переведите подписи, замените страницы на их переводы и запишите меню с параметром lang нового языка. Например, английское меню из русского:

curl -s "$API/site/$SITE/data/menu.header?lang=ru" -H "Authorization: Bearer $OP_TOKEN"

curl -s -X PUT "$API/site/$SITE/data/menu.header" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"lang": "en", "items": [
        {"page": "/en/docs/", "title": "Docs"},
        {"url": "https://example.com", "title": "Партнёры", "target": "_blank"}
      ]}'

Вывести на странице

Меню на странице выводит системный фрейм menu. Поставьте его во фрейм или в текст страницы и укажите область параметром place. Без place фрейм выводит меню шапки. Например, меню первой колонки подвала:

<!-- frame/menu {"place":"footer_1"} /-->

Верстку меню можно менять. Внутри фрейма стоит повторитель по menu.header и вложенный повторитель по item.children. Теги, классы и глубину задает разметка фрейма, а не платформа. Если фрейма на сайте нет, поставьте его из библиотеки через POST /site/{site_id}/frames/system/menu/install. Затем правьте разметку через PUT /frames/menu, как у любого фрейма. Параметр depth со значением 1 оставляет только верхний уровень. Свернутое меню выводит фрейм menu--dropdown, подпись задает параметр label. Колонки подвала с заголовками выводит фрейм footer-columns. Все системные фреймы — в разделе Готовые фреймы.

Вопросы и ответы

Почему после записи у пунктов новые id?

PUT удаляет прежние пункты и создаёт их заново, поэтому id пунктов меняются. Пункт на страницу находят по object_id: он остаётся прежним.

Почему пункт на страницу стал обычной ссылкой?

При записи пункт передали с url, а не с page. Такой пункт сломается, если адрес страницы изменится. Пункты на страницы переносите как {"page": object_id}.

Почему пункт не виден на сайте?

Пункт ведёт на страницу, которую посетитель не увидит: она в черновике, приватная или удалена. При чтении такие пункты отбрасываются, их число — в meta.invalid_items. Опубликуйте страницу или уберите пункт.

Почему API не записал меню?

В меню есть пункт на неопубликованную страницу — 409 menu_items_invalid — или на страницу, которой нет, — 409 menu_items_unresolved. В обоих случаях меню не меняется: опубликуйте страницу или уберите пункт и запишите меню ещё раз.

Где коды ошибок?

В справочнике API. Ответ с ошибкой сам называет причину.

arrow_backНазад
Настройки сайта
Далееarrow_forward
Языки и переводы
На этой странице
  • Прочитать
    • Изменить
      • Создать меню
        • Языки
          • Вывести на странице
            • Вопросы и ответы
              • Почему после записи у пунктов новые id?
                • Почему пункт на страницу стал обычной ссылкой?
                  • Почему пункт не виден на сайте?
                    • Почему API не записал меню?
                      • Где коды ошибок?
                    1. Главная
                    2. Docs
                    3. Документация OnPress v2
                    4. Обзор
                    5. Меню
                    OnPress
                    OnPress
                    ИП Зуев И.В. ИНН: 360408359441
                    info@onpress.pro
                    © 2026
                    политика конфиденциальности публичная оферта
                    • visa
                    • mastercard
                    • sber
                    • tpay