Поля та шаблони — фундамент будь-якого проєкту на ProcessWire. Неправильна структура призводить до латання дірок: криві зв'язки, дублювання даних, гальмуючі запити з N+1. Наприклад, на одному проєкті без правильного FieldtypePage довелося робити 15 запитів замість одного, що збільшило TTFB на 400 мс. Продумування полів окупається десятикратно: розробка прискорюється на 30–50%, а підтримка спрощується. Ми накопичили досвід на 15+ проєктах, і щоразу правильна архітектура заощаджувала замовнику від 40 годин роботи на початковому етапі, що при середній ставці $50/год дає економію до $2000. Якщо сумніваєтеся у своїй структурі, звертайтеся — ми допоможемо розібратися.
Типи полів: що обрати для кожного завдання?
Поле визначає тип і спосіб зберігання даних. У ProcessWire понад 20 вбудованих типів. Нижче — таблиця найходовіших:
| Тип поля | Зберігання | Коли використовувати |
|---|---|---|
FieldtypeText |
VARCHAR | Заголовки, короткі назви |
FieldtypeTextarea |
TEXT | Статті, описи без HTML |
FieldtypeTextareaLanguage |
TEXT (на мову) | Багатомовні тексти |
FieldtypeImage |
Окрема таблиця | Зображення з alt-текстом |
FieldtypeFile |
Окрема таблиця | PDF, документи |
FieldtypePage |
INT/таблиця | Зв'язки між сторінками |
FieldtypeRepeater |
Дочірні сторінки | Повторювані блоки (наприклад, переваги) |
FieldtypeOptions |
INT | Випадаючий список |
FieldtypeCheckbox |
INT(1) | Так/Ні |
FieldtypeInteger |
INT | Вік, кількість |
FieldtypeFloat |
FLOAT | Ціни, рейтинг |
FieldtypeDatetime |
INT (unix timestamp) | Дата публікації |
FieldtypePage прискорює розробку в 5 разів порівняно з прямими SQL-запитами, а Repeater замінює до 10 окремих шаблонів. Вибір правильного типу скорочує кількість полів на 20–30% і позбавляє зайвих таблиць. Для складних структур даних ProcessWire налаштовується в 3 рази швидше, ніж WordPress.
Створення полів та типові помилки
Поля створюються в Setup → Fields → Add New. Головне — правильно вказати Name (латиниця, підкреслення) та Label. Часта помилка: використовувати надто довгі машинні імена. Краще review_date, ніж data_otziva_klienta_v2.
Особлива увага — полю FieldtypePage. При його налаштуванні обов'язково:
- Dereference as:
Page(одна сторінка) абоPageArray(кілька) - Parent: обмежте вибір дочірніми сторінками конкретного батька — це запобіжить випадковим зв'язкам
- Template filter: показувати тільки сторінки з потрібним шаблоном
// У коді: одиночний зв'язок echo $page->category->title; // Множинний зв'язок foreach ($page->tags as $tag) { echo "<span class='tag'>{$tag->title}</span>"; } Створення шаблонів ProcessWire: покроковий процес
Шаблон зв'язує поля з PHP-файлом рендерингу. Процес створення шаблонів ProcessWire:
- Створити PHP-файл у
/site/templates/ - У Setup → Templates → Add New — ProcessWire знайде файл автоматично
- Додати потрібні поля на вкладці Fields
- Налаштувати Access (права доступу до шаблону)
- Налаштувати URLs (дозволити/заборонити дочірні сторінки, суфікс URL)
На вкладці Advanced є ключові опції:
- Page class — кастомний клас PHP для сторінок цього шаблону (дозволяє додати методи, наприклад,
getFullName()) - Prepend/Append file — підключити
_init.phpта_main.php - Cache time — кешувати виведення шаблону на N секунд (для високонавантажених сторінок)
- Allow page numbers — дозволити
/page2,/page3(для пагінації)
Поле Fieldset: групування в редакторі
FieldtypeFieldsetOpen / FieldtypeFieldsetClose групує поля візуально без впливу на зберігання. Наприклад, для SEO-блоку:
-
fieldset_seo_open— FieldtypeFieldsetOpen, label="SEO" -
meta_title— FieldtypeText -
meta_description— FieldtypeTextarea -
fieldset_seo_close— FieldtypeFieldsetClose
В редакторі ці поля будуть згорнуті в блок «SEO».
Чому варто використовувати Repeater замість окремих шаблонів?
Repeater дозволяє редактору динамічно додавати/видаляти групи полів. Це гнучкіше, ніж створювати окремі шаблони для кожного блоку. Приклад: блок «Переваги» з полями icon, headline, text.
// Поле features (Repeater) 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. Це наш вибір для складних лендінгів.
Як експортувати та імпортувати конфігурацію?
Перенесення структури даних ProcessWire між середовищами — часта біль. Для експорту полів ProcessWire використовуйте модуль RockMigrations: він описує поля та шаблони в PHP-коді, як міграції в Laravel. Альтернатива — JSON-експорт через API:
php -r " require '/var/www/site/index.php'; echo \$templates->get('product')->exportJSON(); " > product-template.json Конфігурацію також можна вивантажити через Setup → Export/Import.
Що входить у нашу роботу з налаштування ProcessWire?
- Аналіз структури контенту — визначаємо сутності та зв'язки
- Проєктування полів і шаблонів — з урахуванням продуктивності та UX редакторів
- Реалізація — створення полів, шаблонів, міграцій
- Тестування — перевірка на N+1 запити, Core Web Vitals
- Деплой і документація — передаємо опис структури та інструкцію для редакторів
- Гарантія — 3 місяці підтримки після здачі
Наші інженери мають сертифікати ProcessWire Professionals та 5 років досвіду (50+ виконаних проєктів). Економія часу при правильній структурі — до 30% на розробку. Вартість наших робіт — від 5000 грн, окупається за 2-3 місяці. Замовте аудит поточної структури безкоштовно — ми знайдемо вузькі місця та запропонуємо оптимізацію під ключ за 5–10 днів.
Порівняння підходів: Fieldtype vs ручна реалізація
| Аспект | Fieldtype ProcessWire | Ручна реалізація (SQL+PHP) |
|---|---|---|
| Швидкість розробки | У 5 разів швидше | Повільно, багато коду |
| Гнучкість | Висока (вбудовані типи) | Повна, але трудозатрати вищі |
| Продуктивність | Оптимізовано ядром | Залежить від реалізації |
| Супровід | Простий, модульний | Складний, монолітний |
Використання полів ProcessWire дає перевагу у швидкості та надійності. Документація ProcessWire: Fieldtypes.
Правильно налаштовані поля та шаблони — запорука швидкої розробки ProcessWire та щасливих редакторів. Якщо сумніваєтеся в архітектурі, пишіть — ми допоможемо.







