Настройка полей и шаблонов ProcessWire
Поля и шаблоны — фундамент любого проекта на ProcessWire. Поле определяет тип и способ хранения данных; шаблон — это набор полей плюс связанный PHP-файл рендеринга. Правильно спроектированная структура полей экономит десятки часов при дальнейшей разработке.
Создание полей
Поля создаются в разделе Setup → Fields → Add New. Обязательно указывать:
-
Name — машинное имя (латиница,
_), используется в коде как$page->field_name - Type — тип данных
- Label — отображается в редакторе
Часто используемые типы полей:
| Тип | Хранение | Применение |
|---|---|---|
FieldtypeText |
VARCHAR | Краткие строки, заголовки |
FieldtypeTextarea |
TEXT | Длинный текст без HTML |
FieldtypeTextareaLanguage |
TEXT (per lang) | Многоязычный текст |
FieldtypeImage |
отдельная таблица | Изображения с метаданными |
FieldtypeFile |
отдельная таблица | Документы, PDF |
FieldtypePage |
INT / таблица | Связи между страницами |
FieldtypeRepeater |
дочерние страницы | Повторяемые группы полей |
FieldtypeOptions |
INT | Выпадающий список |
FieldtypeCheckbox |
INT(1) | Булево значение |
FieldtypeInteger |
INT | Числа |
FieldtypeFloat |
FLOAT | Дробные числа, цены |
FieldtypeURL |
VARCHAR | Ссылки |
FieldtypeDatetime |
INT (UNIX timestamp) | Дата и время |
Настройка FieldtypePage (связи)
При создании поля типа Page обязательно настроить:
-
Derefence as —
Page(одна страница) илиPageArray(несколько) - Parent — ограничить выбор дочерними страницами конкретного родителя
- Template filter — показывать только страницы с указанным шаблоном
// В коде: одиночная связь
echo $page->category->title;
// Множественная связь
foreach ($page->tags as $tag) {
echo "<span class='tag'>{$tag->title}</span>";
}
Создание шаблонов
Шаблон создаётся в Setup → Templates → Add New. Процесс:
- Создать PHP-файл в
/site/templates/my-template.php - Перейти в Templates → Add New — ProcessWire найдёт файл автоматически
- Добавить нужные поля на вкладке Fields
- Настроить Access (права доступа к шаблону)
- Настроить URLs (разрешить/запретить дочерние страницы, суффикс URL)
Вкладка Advanced шаблона
Важные параметры вкладки Advanced:
- Page class — кастомный класс PHP для страниц этого шаблона
-
Prepend/Append file — подключать
_init.phpи_main.php - Cache time — кэшировать вывод шаблона N секунд
-
Allow page numbers — разрешить
/page2,/page3в URL (нужно для пагинации)
Fieldset и группировка полей
Fieldset (FieldtypeFieldsetOpen / FieldtypeFieldsetClose) группирует поля визуально в редакторе без влияния на хранение:
Порядок добавления полей в шаблон:
-
fieldset_seo_open— FieldtypeFieldsetOpen, label="SEO" -
meta_title— FieldtypeText -
meta_description— FieldtypeTextarea -
fieldset_seo_close— FieldtypeFieldsetClose
В редакторе страницы эти поля будут свёрнуты в блок «SEO».
Repeater: повторяемые группы
Поле типа Repeater содержит несколько дочерних полей, которые редактор может добавлять/удалять:
// Поле features (Repeater с полями: icon, headline, text)
foreach ($page->features as $feature) {
echo "<div class='feature-card'>";
echo " <img src='{$feature->icon->url}' alt=''>";
echo " <h3>{$feature->headline}</h3>";
echo " <p>{$feature->text}</p>";
echo "</div>";
}
RepeaterMatrix (платный модуль ProFields) позволяет иметь несколько типов блоков в одном поле — аналог Flexible Content в ACF.
Экспорт и импорт конфигурации
Конфигурацию полей и шаблонов можно экспортировать через Setup → Export/Import или модуль DatabaseBackups. Для переноса между окружениями используют JSON-экспорт шаблонов:
# Резервная копия структуры (не данных)
# Через модуль RockMigrations или вручную через API:
php -r "
require '/var/www/site/index.php';
echo \$templates->get('product')->exportJSON();
" > product-template.json
Модуль RockMigrations позволяет описывать структуру полей и шаблонов в PHP-коде и применять изменения воспроизводимо — аналог миграций в Laravel.







