Что такое PageCraft
PageCraft — конструктор страниц. Страница собирается из блоков, блок описывается схемой полей и шаблоном Liquid, готовая страница публикуется на витрину интернет-магазина.
Целевая витрина — платформа 4CMS: PageCraft собирает HTML у себя и отдаёт его магазину через публичный API платформы. Кроме 4CMS есть провайдер публикации по FTP, но развивается только 4CMS.
Чем блок отличается от куска HTML
Заголовок раздела «Чем блок отличается от куска HTML»Вставить готовую разметку в магазин можно и без PageCraft — но такой кусок HTML живёт ровно один раз и на одной странице. Блок PageCraft — самостоятельная сущность:
| Что есть у блока | Что это даёт |
|---|---|
| Схема полей | заголовки, ссылки и картинки правятся формой, а не в разметке |
| История ревизий | правка создаёт новую версию, старая никуда не девается |
| Обновление на страницах | блок на странице — ссылка на версию, а не копия; поправил блок — обновил все страницы |
| Медиа | картинки блока лежат в S3-хранилище сайта |
| Источники данных | блок может получить с витрины товары рубрики, содержимое корзины и подобное |
| Дизайн-токены сайта | блок перекрашивается вместе с темой магазина |
| Документация | описание блока для того, кто будет им пользоваться |
Из чего состоит система
Заголовок раздела «Из чего состоит система»Блок — переиспользуемая единица содержимого: Liquid-шаблон, CSS, JS и схема полей. Главная сущность.
Ревизия блока — неизменяемый снимок этого содержимого. Сохранение блока не
перезаписывает предыдущее состояние, а добавляет ревизию с новым номером версии
мажор.минор.
Страница — упорядоченный набор блоков внутри сайта плюс SEO-поля.
Блок на странице — вхождение блока в конкретную страницу: ссылка на блок, ссылка на его версию, порядковый номер и заполненные значения полей.
Макет — обёртка страницы: шапка, футер, общая структура. Устроен так же, как блок, и тоже имеет ревизии.
Сайт — представление магазина внутри PageCraft: настройки провайдера публикации, переменные, хранилище медиа, синхронизированные из магазина темы и источники данных.
Источник данных — именованный поставщик живых данных с витрины. Блок объявляет в схеме слот под данные, а на странице слоту назначается конкретный источник.
Путь от блока до опубликованной страницы
Заголовок раздела «Путь от блока до опубликованной страницы»- Вы описываете схему полей блока — какие настройки будет заполнять редактор.
- Пишете Liquid-шаблон, который эти поля выводит, плюс CSS и при необходимости JS.
- Сохраняете — появляется ревизия
1.0. - Добавляете блок на страницу и заполняете поля значениями.
- Публикуете страницу: PageCraft рендерит шаблоны блоков и отдаёт провайдеру HTML, CSS и JS. Обёртку с шапкой и подвалом добавляет витрина. Повторная публикация обновляет ту же страницу, а не создаёт новую.
Предпросмотр в редакторе рендерит тот же шаблон в браузере — движки Liquid на сервере и в браузере разные, и это иногда заметно; различия собраны на странице Различия сервера и браузера.
Два способа работать
Заголовок раздела «Два способа работать»Руками. Вы сами пишете схему и шаблон в редакторе блока. Этот путь описан в Быстром старте и в разделе Блоки.
Через ИИ-агента. PageCraft раздаёт скиллы — пакеты инструкций, по которым внешний агент (Claude Code, Cursor и другие харнессы) создаёт блоки и страницы через REST API по API-ключу. Об этом — раздел API и агенты.
Оба способа работают с одними и теми же сущностями: агент не получает никаких возможностей сверх тех, что есть в интерфейсе.
Что читать дальше
Заголовок раздела «Что читать дальше»| Вопрос | Страница |
|---|---|
| Хочу сделать первый блок прямо сейчас | Быстрый старт |
| Что означают термины | Словарь терминов |
| Как устроен блок | Анатомия блока |
| Какие бывают типы полей | Схема полей |
| Что доступно в шаблоне | Что доступно в контексте |
| Как отдать блоку живые данные | Биндинги и слоты |
| Как опубликовать страницу | Публикация и обновление |
Источники: backend/src/Entity/Block.php, backend/src/Entity/BlockRevision.php,
backend/src/Entity/Page.php, backend/src/Entity/PageBlock.php,
backend/src/Entity/Site.php, backend/src/Publishing/BlockRenderer.php,
backend/src/Publishing/LayoutRenderer.php, backend/src/Publishing/Provider/.