Клиенту потребовался корпоративный портал с многоязычной структурой на 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-адреса переводятся автоматически: /ru/uslugi/ и /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 месяцев.
Получите консультацию по вашему проекту — пришлём коммерческое предложение с фиксированной стоимостью в течение дня. Свяжитесь с нами, чтобы обсудить детали. Закажите бесплатный предварительный анализ архитектуры — мы оценим сложность и предложим оптимальное решение.







