Налаштування полів та шаблонів 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.







