Клієнту знадобився корпоративний портал з багатомовною структурою на 12 мовах, вкладеними категоріями послуг та розмежуванням прав доступу для трьох типів редакторів. WordPress вимагав би встановлення плагінів ACF, WPML та Custom Post Types – 2–3 платних рішення. На ProcessWire — безкоштовній CMS з відкритим кодом — ми реалізували все штатними засобами: LanguageSupport, FieldtypePage та успадкування шаблонів. Через два тижні адмінка була готова, редактори почали наповнення. Жодного платного розширення — економія до 40% порівняно з комерційними CMS. Кожен проєкт ми оцінюємо фіксованим кошторисом — жодних прихованих платежів. ProcessWire — ефективна альтернатива WordPress для проєктів з кастомною структурою.
Як ProcessWire справляється з нестандартними структурами даних?
ProcessWire ідеальний там, де структура контенту унікальна. Каталог послуг з 30+ атрибутами, багатомовний сайт на 15 мовах, портал з нелінійною ієрархією сторінок — тут він на голову вище за WP та Drupal. Офіційна документація ProcessWire зазначає: «API побудований на принципі простоти: кожен виклик повертає те, що очікуєш». В адмінці ви створюєте поля, групуєте їх у шаблони та призначаєте сторінкам. Жодних жорстких типів контенту, лише ваша задача.
Приклад з практики: замовник керував мережею клінік у 8 країнах. Кожна клініка мала свій набір послуг, цін та лікарів. На WordPress ми б писали кастомні типи записів та ACF — десятки плагінів. На ProcessWire обійшлися 4 шаблонами та полями-репітерами. Контент-менеджери освоїли адмінку за годину.
Чому ProcessWire швидший за WordPress в 7 разів?
У тестах з вибіркою 1000 сторінок ProcessWire віддає відповідь за 20 мс, WordPress — за 150 мс. Різниця в 7,5 раза досягається за рахунок відсутності важких абстракцій. ProcessWire не завантажує весь двигун для кожного запиту — лише потрібні модулі.
Архітектура проєкту: шаблони та поля
Кожен шаблон — PHP-файл у /site/templates/. Розмітка, логіка та дані розділяються через контролери або _init.php/_main.php. Типова структура:
-
/site/templates/_init.php— глобальні змінні, хелпери -
/site/templates/_main.php— обгортка layout -
/site/templates/home.php— головна -
/site/templates/services.php— список послуг -
/site/templates/service-item.php— детальна -
/site/templates/partials/nav.php,hero.php -
/site/modules/— кастомні модулі -
/site/config.php
Доступ до даних через $pages API лаконічний:
$services = $pages->find("template=service-item, status=published, sort=sort, limit=12"); $results = $pages->find("template=service-item, title|body*=$q, limit=20"); $recent = $pages->find("template=news, date>=" . strtotime("-30 days") . ", sort=-date"); foreach ($page->related_cases as $case) { echo "<a href='{$case->url}'>{$case->title}</a>"; } foreach ($page->features as $feature) { echo "<div class='feature'><h3>{$feature->headline}</h3><p>{$feature->text}</p></div>"; } Багатомовність з коробки
Модулі LanguageSupport, LanguageSupportFields, LanguageSupportPageNames вмикаються в адмінці (документація). У кожного текстового поля з'являються вкладки мов. У шаблоні перемикання — один рядок:
$user->language = $languages->get("en"); echo $page->title; // англійський заголовок URL-адреси перекладаються автоматично: /uk/poslugy/ та /en/services/ — одна й та сама сторінка.
Що ми вирішуємо?
| Проблема | Рішення ProcessWire | Типова альтернатива |
|---|---|---|
| Складна ієрархія сторінок | Вкладені сторінки з успадкуванням полів | Деревоподібні структури в Drupal |
| Багато мов | LanguageSupport + поля | WPML (платний) |
| Кастомні поля | Fieldtype: текст, зображення, repeater, page | ACF (платний) |
| Ролі та права | Гранулярні дозволи на рівні шаблону | Дод. плагіни |
Продуктивність і кешування
Кешування через $cache API:
$nav = $cache->get("main-nav"); if (!$nav) { $nav = buildNav($pages); $cache->save("main-nav", $nav, 3600); } ProCache (платний модуль) генерує статичний HTML і віддає його безпосередньо через .htaccess — швидкість як у статики. Інвалідація відбувається за подіями: при зміні сторінки відповідні HTML-файли перестворюються. Це зберігає актуальність без втрати продуктивності.
Типові терміни розробки
| Тип сайту | Шаблонів | Термін |
|---|---|---|
| Корпоративний | 6–10 | 3–5 тижнів |
| Каталог з фільтрацією | 8–14 | 5–8 тижнів |
| Багатомовний портал | 10–20 | 7–12 тижнів |
| API-бекенд (headless) | 4–8 | 2–4 тижні |
Headless-режим
ProcessWire як headless CMS: шаблон повертає JSON, фронтенд на React/Next.js забирає дані через ендпоінт. ProcessWire відповідає лише за зберігання та видачу контенту.
header("Content-Type: application/json"); $data = []; foreach ($pages->find("template=product, limit=50") as $p) { $data[] = [ "id" => $p->id, "title" => $p->title, "slug" => $p->name, "price" => $p->price, "image" => $p->image->httpUrl ?? null, ]; } echo json_encode($data); Етапи розробки
- Аналітика — вивчаємо бізнес-процеси, збираємо вимоги до полів і шаблонів.
- Проєктування — створюємо архітектуру шаблонів, налаштовуємо адмінку.
- Реалізація — пишемо кастомні модулі, верстаємо шаблони.
- Тестування — перевіряємо права доступу, швидкість завантаження, Core Web Vitals.
- Деплой — налаштовуємо кешування, передаємо документацію.
Типові помилки та як їх уникнути
- Ігнорування кастомних полів для даних, які не вписуються в шаблон — завжди використовуйте Fieldtype та Repeater замість зберігання даних у текстових полях як JSON.
- Відсутність кешування повторюваних запитів — обгортайте запити в
$cache->get()з TTL. - Неправильне налаштування прав — перед запуском протестуйте ролі: редактор не повинен бачити шаблони налаштувань.
Що входить у роботу
- Проєктування архітектури полів і шаблонів
- Налаштування адмінки під бізнес-процеси
- Написання кастомних PHP-модулів
- Інтеграція із зовнішніми сервісами (1С, CRM, платіжні шлюзи)
- Тестування та оптимізація Core Web Vitals
- Навчання редакторів
- Передача доступів та документація
- Фіксована вартість після попереднього аналізу
Наш досвід та гарантії
Ми займаємося ProcessWire з версії 2.x — понад 5 років. За цей час реалізували 20+ проєктів: від простих корпоративних сайтів до headless-порталів з навантаженням під мільйон запитів на день. На всі роботи — гарантія 12 місяців.
Отримайте консультацію щодо вашого проєкту — надішлемо комерційну пропозицію з фіксованою вартістю протягом дня. Зв'яжіться з нами, щоб обговорити деталі. Замовте безкоштовний попередній аналіз архітектури — ми оцінимо складність і запропонуємо оптимальне рішення.







