Папки
Папки нужны, чтобы страницы сайта не лежали одной плоской кучей. Это способ организации внутри PageCraft — и только он.
Устройство
Заголовок раздела «Устройство»- Папка принадлежит сайту и создаётся в нём:
site_idобязателен. - Вложенность произвольной глубины через
parent_id; папка без родителя лежит в корне сайта. - Страница либо лежит в папке (
folder_id), либо в корне сайта (folder_id: null). - Папки одного сайта нельзя вкладывать в папки другого — ответ 422.
POST /api/v1/folders
{ "name": "Акции 2026", "site_id": 3, "parent_id": 12}Операции
Заголовок раздела «Операции»| Действие | Запрос |
|---|---|
| список папок сайта | GET /api/v1/folders?site_id=3 |
| одна папка со счётчиками | GET /api/v1/folders/{id} |
| создать | POST /api/v1/folders |
| переименовать или переместить | PUT /api/v1/folders/{id} |
| удалить вместе с содержимым | DELETE /api/v1/folders/{id} |
В ответе про папку есть pages_count и subfolders_count — количество
непосредственных детей. Запрос одной папки дополнительно отдаёт
total_pages_count и total_subfolders_count — то же с учётом всего поддерева.
Переименование и перемещение делаются одним запросом: передайте name, parent_id
или оба. parent_id: null поднимает папку в корень сайта. Пустое имя отклоняется
(422), как и попытка сделать папку потомком самой себя или собственного потомка —
«Нельзя сделать папку потомком самой себя».
Перемещение страниц
Заголовок раздела «Перемещение страниц»Папка страницы — обычное поле, меняется вместе с остальными:
PUT /api/v1/pages/42
{ "folder_id": 12 }folder_id: null возвращает страницу в корень сайта. В интерфейсе для этого есть
отдельная операция (PUT /api/pages/{id}/move), делающая ровно то же самое.
Удаление удаляет содержимое
Заголовок раздела «Удаление удаляет содержимое»В ответе приходит deleted_pages и deleted_subfolders — сколько объектов
удалилось на самом деле. Перед удалением стоит запросить GET /api/v1/folders/{id}
и посмотреть на total_pages_count: удаление опубликованной страницы в PageCraft
не убирает её с витрины, там она останется висеть без связи с исходником.
Источники
Заголовок раздела «Источники»backend/src/Entity/PageFolder.php,Page.phpbackend/src/Service/PageFolder/CreatePageFolderService.php,UpdatePageFolderService.php,DeletePageFolderService.phpbackend/src/Controller/V1/PageFolder/*,backend/src/Controller/PageFolder/*backend/src/Service/Page/UpdatePageService.php