Розробка сайту на CMS ProcessWire

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

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

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

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Розробка сайту на CMS ProcessWire
Середня
~1-2 тижні
Часті питання

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

Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Розробка веб-сайту на CMS ProcessWire

ProcessWire — нереляційна CMS з API, побудованою на концепції «все є сторінкою». Кожна одиниця контенту — це сторінка з полями; шаблон — це PHP-файл, який рендерить сторінку. Така архітектура дає повний контроль над структурою даних без обмежень, характерних для WordPress або Drupal.

Коли вибирають ProcessWire

ProcessWire перемагає у завданнях, де структура контенту складна і нестандартна: каталоги послуг з десятками атрибутів, багатомовні портали, сайти з нестандартною ієрархією сторінок. Він не нав'язує тип сайту — немає «постів» та «сторінок» на розумінні WP, є тільки сторінки з полями, які ви визначаєте самі.

Типові проекти:

  • корпоративні сайти з нетривіальною структурою розділів
  • каталоги продукції з фасетною фільтрацією
  • багатомовні сайти (до 30+ мов через LanguageSupport)
  • портали з кастомними правами доступу до контенту

Архітектура проекту

Структура шаблонів ProcessWire дотримується простого принципу: один шаблон — один PHP-файл у /site/templates/. Розмітка, логіка та дані можуть бути розділені через директорію controllers/ або через вбудовані _init.php/_main.php.

/site/
  templates/
    _init.php          # глобальні змінні, підключення хелперів
    _main.php          # обгортка layout (header/footer)
    home.php           # шаблон головної
    services.php       # шаблон списку послуг
    service-item.php   # шаблон однієї послуги
    partials/
      nav.php
      hero.php
  modules/             # кастомні модулі
  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");

Поля та типи даних

ProcessWire підтримує більше 30 типів полів «із коробки»: FieldtypeText, FieldtypeTextarea, FieldtypeImage, FieldtypeFile, FieldtypePage (зв'язки), FieldtypeRepeater (повторюючі групи), FieldtypeOptions, FieldtypeMapMarker.

Реляції між сторінками — через FieldtypePage:

// Шаблон services.php — вивід пов'язаних матеріалів
foreach ($page->related_cases as $case) {
    echo "<a href='{$case->url}'>{$case->title}</a>";
}

FieldtypeRepeater використовується для секцій зі змінною кількістю блоків — наприклад, блоки «іконка + заголовок + текст» на лендингу:

foreach ($page->features as $feature) {
    echo "<div class='feature'>";
    echo "<img src='{$feature->icon->url}'>";
    echo "<h3>{$feature->headline}</h3>";
    echo "<p>{$feature->text}</p>";
    echo "</div>";
}

Багатомовність

Модулі LanguageSupport, LanguageSupportFields, LanguageSupportPageNames включаються через админку. Після активації у кожного текстового поля з'являються вкладки мов. У шаблоні переключення мови — одна лінія:

$user->language = $languages->get("en");
echo $page->title; // повернеться англійський заголовок

URL-адреси сторінок теж перекладаються: /ru/uslugi/razrabotka/ та /en/services/development/ — одна й та ж сторінка.

Права доступу та ролі

ProcessWire має гранульовані права: можна обмежити редагування конкретного шаблону конкретною роллю, заборонити публікацію без підтвердження, приховати поля від певних користувачів. Налаштування через $config->pagefileSecure та модуль PageEditPerRole.

Продуктивність

Кешування на рівні шаблону через $cache API:

$nav = $cache->get("main-nav");
if (!$nav) {
    $nav = buildNav($pages);
    $cache->save("main-nav", $nav, 3600); // TTL 1 година
}

ProCache (платний модуль) генерує статичні HTML-файли і видає їх прямо через .htaccess, обходячи PHP повністю — швидкість наближується до статичних сайтів.

Типові сроки розробки

Тип сайту Сторінок/шаблонів Срок
Корпоративний сайт 6–10 шаблонів 3–5 тижнів
Каталог з фільтрацією 8–14 шаблонів 5–8 тижнів
Багатомовний портал 10–20 шаблонів 7–12 тижнів
API-бекенд (headless) 4–8 шаблонів 2–4 тижні

Headless-режим

ProcessWire працює як headless CMS через модуль ProcessWireAPI або вручну — шаблон повертає JSON:

// api.php — шаблон для API-ендпоінту
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);

Фронтенд на React або Next.js забирає дані через цей ендпоінт. ProcessWire при цьому відповідає тільки за зберігання та видачу контенту.