
PageBuilder
Визуальный конструктор секций для MODX 3: черновик и публикация без перезаписи content ресурса
- MODX 3
- PHP 8.2
- Vue 3


Версия: Pro (advanced-fields).
Широта, долгота, масштаб и провайдер карты в инспекторе (отдельного поля «улица» нет — текстовый адрес у типа address). После save enrich добавляет embed_url и watch_url любому объекту с ключами lat и lng. Плоские map_embed_url, map_provider, map_watch_url пишутся при первом успешном встраивании; при нескольких точках приоритет у ключа location.
Несколько точек собирают полем repeater: широта и долгота отдельными текстовыми полями или своей схемой. Адрес встраивания берите из сохранённых данных, не собирайте ссылку вручную.
{
"name": "location",
"type": "map",
"label": "Карта",
"tab": "Контент",
"width": 100,
"active": true
}Объект { lat, lng, zoom, provider }.
Ключ location в данных секции после save enrich (MapEmbedResolver):
{
"location": {
"lat": 55.751244,
"lng": 37.618423,
"zoom": 14,
"provider": "yandex",
"embed_url": "https://yandex.ru/map-widget/v1/?ll=37.618423%2C55.751244&z=14&pt=37.618423%2C55.751244%2Cpm2rdm&l=map",
"watch_url": "https://yandex.ru/maps/?ll=37.618423%2C55.751244&z=14&pt=37.618423%2C55.751244%2Cpm2rdm&l=map"
},
"map_embed_url": "https://yandex.ru/map-widget/v1/?ll=37.618423%2C55.751244&z=14&pt=37.618423%2C55.751244%2Cpm2rdm&l=map",
"map_provider": "yandex",
"map_watch_url": "https://yandex.ru/maps/?ll=37.618423%2C55.751244&z=14&pt=37.618423%2C55.751244%2Cpm2rdm&l=map"
}yandex; osm: OpenStreetMap.<iframe src="[[+location.embed_url]]" title="Карта"></iframe><iframe src="{$location.embed_url|default($map_embed_url)|escape}" title="Карта"></iframe>Для полей с name, которые сохраняются в данных секции:
| Ключ | Тип | Роль | Панель |
|---|---|---|---|
tab | string | Подзаголовок группы в инспекторе | да |
width | 25, 33, 50, 66, 75, 100 | Ширина поля в % строки (flex); в CMP только эти значения | да |
description | string | Подсказка под подписью | да |
default | any | Начальное значение новой секции | да |
active | bool | false: скрыть поле в инспекторе | да |
required | bool | Обязательно при publish (черновик сохраняется) | да |
Подробнее: обзор полей.