homepage.blocks.update
Scope:
homepageКто может вызывать: Администратор портала
Меняет настройки блока на сайте в опции componentsettings. Метод не создаёт блоков, не пишет файлы и не меняет содержимое блока (файлы center_block/<code>.php / right_block/<code>.php). Для любого блока доступны active, sort, title; для локальных блоков (source = local) дополнительно rights, mobile, menu, left_menu. Для встроенных блоков допустимо только то, что даёт страница «Настроить Главную»: active, sort, title.
HTTP: POST
Побочные эффекты: изменяет данные (настройки главной указанного сайта)
Параметры метода
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
code |
string |
да | Код блока. |
zone |
string |
да | Зона: center или right. |
fields |
object |
да | Изменяемые поля (см. таблицу ниже). Другие ключи (в том числе code, zone, render, template) отклоняются с VALIDATION_ERROR. |
siteId |
string |
нет | Сайт, для которого меняются настройки; по умолчанию текущий. |
Поля fields
| Поле | Блоки | Тип и границы | Описание |
|---|---|---|---|
active |
все | bool (true/false, также Y/N, 1/0) |
Включить или отключить блок на сайте. Новый локальный блок из /local по умолчанию выключен: чтобы он вывелся на главной, передайте true. |
sort |
все | целое от 0 до 1000000 |
Порядок вывода внутри зоны (меньше - выше). |
title |
все | строка 1-255 символов, теги вырезаются | Название блока (как переименование в «Настроить Главную»). Пустое после очистки значение отклоняется. |
left_menu |
локальные, зона center, при наличии menu |
bool |
Показывать пункт в левом меню портала (тот же флаг, что «Вывести в левое меню» в «Настроить Главную», где ссылка вводится рядом с флагом и сохраняется как menu.url). Метод сам обновляет пункт меню портала: он появляется у активного блока с menu и left_menu = true и без rights, и исчезает при left_menu = false, выключении блока, сбросе menu или добавлении rights (меню портала не скрывает пункты по пользователям, поэтому у блока с rights пункта в нём нет). Без menu (в запросе или уже сохранённого) отклоняется. |
rights |
локальные | {admin: bool, groups: int[]} |
Кому виден блок: администраторам (admin) и/или участникам групп (groups - положительные целые). Пустое значение ("", [], null) снимает ограничение. |
mobile |
локальные | {type, url, dataMethod} |
Контракт мобильного приложения. type: none, webview-url (нужен url), native-json (необязательный dataMethod). url - относительный (/path) или https://...: javascript:, http: и протокол-относительные (//host) отклоняются. dataMethod - только имя REST-метода <scope>.<entity>.<action>. Пустое значение сбрасывает контракт. |
menu |
локальные, зона center |
{url, title} |
Пункт левого меню блока. url - относительный или https://... (правила как у mobile.url), title необязателен (по умолчанию - название блока). Пустое значение удаляет пункт и сбрасывает left_menu. |
Все значения проверяются до записи: при любой ошибке не сохраняется ничего.
Возвращаемые данные
result- обновлённый блок в формате homepage.blocks.get. Ответ строится по только что сохранённым настройкам и не проверяет права вызывающего на просмотр блока: администратор, который сам закрыл блок от своих групп черезrights, получает сохранённый блок (а неACCESS_DENIED); последующиеget,listиdataдля него этот блок уже скрывают.total,next-null.error-nullпри успехе.
Обработка ошибок
| Код | Описание |
|---|---|
UNAUTHORIZED |
Пользователь не авторизован |
ACCESS_DENIED |
Нет прав администратора |
NOT_FOUND |
Блок не найден в зоне zone (файл блока не выгружен в /local или код неверный) |
VALIDATION_ERROR |
Не передан fields; неизвестное поле; значение вне границ (sort, длина title), неверный формат (rights, mobile, menu, небезопасный url, mobile.dataMethod не в формате REST-метода); rights/mobile/menu/left_menu у встроенного блока; menu/left_menu у блока сайдбара; left_menu без menu (error.details.field - поле) |
INTERNAL_ERROR |
Внутренняя ошибка сервиса |
Примеры кода
Пример запроса
Название, порядок и доступ только администраторам:
curl -X POST "https://{portal}/rest/{user_id}/{webhook_code}/homepage.blocks.update.json" \
-H "Content-Type: application/json" \
-d '{
"code": "acme_links",
"zone": "right",
"fields": {"title": "Ссылки", "sort": 250, "active": true, "rights": {"admin": true, "groups": []}}
}'
Пункт левого меню блока центра и мобильный контракт:
curl -X POST "https://{portal}/rest/{user_id}/{webhook_code}/homepage.blocks.update.json" \
-H "Content-Type: application/json" \
-d '{
"code": "acme_memo",
"zone": "center",
"fields": {
"menu": {"url": "/company/onboarding/", "title": "Памятка"},
"left_menu": true,
"mobile": {"type": "webview-url", "url": "/m/memo/"}
}
}'
Пример ответа
{
"result": {
"result": {
"code": "acme_links",
"zone": "right",
"source": "local",
"title": "Ссылки",
"sort": 250,
"defaultSort": 500,
"active": true,
"siteId": "s1",
"rights": {"admin": true, "groups": []},
"mobile": {"type": "none", "url": "", "dataMethod": ""},
"menu": null,
"left_menu": false
},
"next": null,
"error": null
},
"total": null
}
См. также
- Обзор раздела
- Как добавить кастомный блок главной
- Виджеты (
homepage.widgets.*) - изменениеactive,sort,titleвиджета; у блоков из/localон работает с теми же настройками - Коды ошибок API
Предыдущая
Следующая