Поля та шаблони ProcessWire: типи, налаштування, оптимізація

Поля та шаблони — фундамент будь-якого проєкту на ProcessWire. Неправильна структура призводить до латання дірок: криві зв'язки, дублювання даних, гальмуючі запити з N+1. Наприклад, на одному проєкті без правильного FieldtypePage довелося робити 15 запитів замість одного, що збільшило TTFB на 400 мс

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Поля та шаблони ProcessWire: типи, налаштування, оптимізація
Простий
від 1 дня до 3 днів

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1467
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1317
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1014
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1276
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1019
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019

Поля та шаблони — фундамент будь-якого проєкту на 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:

  1. Створити PHP-файл у /site/templates/
  2. У Setup → Templates → Add New — ProcessWire знайде файл автоматично
  3. Додати потрібні поля на вкладці Fields
  4. Налаштувати Access (права доступу до шаблону)
  5. Налаштувати 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-блоку:

  1. fieldset_seo_open — FieldtypeFieldsetOpen, label="SEO"
  2. meta_title — FieldtypeText
  3. meta_description — FieldtypeTextarea
  4. 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 та щасливих редакторів. Якщо сумніваєтеся в архітектурі, пишіть — ми допоможемо.