Кастомна тема Pico CMS: де ламається типова верстка
Типова тема Pico CMS розрахована на рівну структуру: одна колонка, меню, список матеріалів. Поки сторінки такі самі, шаблони лягають без опору — контент лежить у markdown-файлах, шаблонізатор підставляє значення з їхніх метаданих.
Але щойно з'являється нестандартна верстка — блоки різної ширини, вкладені секції, повторювані модулі з різним набором полів — штатні шаблони починають диктувати структуру сторінки, а не навпаки.
Перше вузьке місце — обмеження шаблонізатора: наслідування та включення є, окремого шару даних немає. Усе, що не вміщається в метадані файлу, доводиться обчислювати прямо в шаблоні, і та сама розмітка дублюється в десятку місць.
Будь-яка правка блоку перетворюється на прохід по всіх шаблонах, де він зустрічається, а розбіжність між копіями спливає вже на продакшені.
Друге — правки в ядрі рушія. Це найшвидший спосіб досягти потрібної поведінки, тому на ньому зазвичай і зупиняються: перевизначають обробники, дописують логіку у файли ядра, підміняють вивід.
Після цього оновлення перестає бути оновленням — патчі переносять руками, частина змін тихо губиться, і версія рушія завмирає на тій, де все ще сходиться.
Ціна такої схеми — розповзається розмітка на нестандартних сторінках і втрата контролю над версіями. Розбираємо, як це закривається: логіка виїжджає з ядра в тему, у даних з'являється явний контракт, а розмітка збирається з модулів, які можна змінювати окремо.
Що дає виділена тема: швидкість публікацій і правок
Перероблений шар шаблонів — це коли розмітка сторінки не пишеться руками, а збирається з опису контенту. Автор заповнює поля на початку файлу й текст у легкій розмітці, а тема підставляє їх у потрібні місця: заголовок, шапку, сітку карток, блок пов'язаних матеріалів.
Шаблонізатор Twig дає для цього наслідування шаблонів і макроси — один каркас на весь сайт і окремі фрагменти під кожен тип блоку.
Завдяки цьому випуск типової сторінки — не верстка з нуля, а копіювання заготовки й правка полів: десятки хвилин замість годин, і цей час не зростає разом із кількістю сторінок.
Коли змінюється структура картки, правка йде в одному фрагменті й розходиться по всіх розділах одразу — раніше такі зміни проходили по кожній сторінці окремо, і частина з них неминуче відставала.
Багаторазово використовувані блоки заодно прибирають цілий клас відмов розмітки: незакриті контейнери, сітки, що роз'їхалися, різні відступи в однотипних блоках.
Розмітку формує шаблон, тому вона однакова на всіх сторінках і не залежить від того, хто і коли зверстав черговий розділ.
Правки контенту перестають бути приводом для простоїв.
Текст і метадані живуть окремо від коду, тема збирає їх у готову сторінку, тому редактор публікує матеріал без викладки нової збірки, а якщо шаблон усе ж змінюється — він перевіряється на тестовій копії сайту до перенесення на робочий.
Способи кастомізації: надбудова, форк ядра, власний шар
Тема в Pico CMS — це набір шаблонів Twig плюс файл налаштувань: ядро віддає контент, а шаблони вирішують, як він виглядає. Тому кастомізація — питання не синтаксису, а того, що станеться з правками при наступному оновленні рушія.
| Шлях | Коли підходить | Чим обмежений при оновленнях |
|---|---|---|
| Дочірня тема (надбудова) | Зміна розмітки, стилів, складу блоків; перевизначення окремих шаблонів батька | Втрутитися в логіку ядра не можна: після зміни структури батька перевизначення звіряють вручну |
| Форк ядра | Потрібна нестандартна маршрутизація або власний конвеєр обробки сторінок | Кожне оновлення — ручне перенесення правок; конфлікти накопичуються, оновлення безпеки відкладаються |
| Власний шар шаблонів | Тривалий розвиток, нестандартний рендеринг, рушій підключається як бібліотека | Поріг входу вищий: сумісність зі штатним рендерингом команда тримає сама |
На практиці дочірня тема закриває більшість завдань оформлення й переживає оновлення без переписування. Форк застосовують точково — там, де інакше завдання не вирішити, і тоді оновлення ядра планують окремим етапом. Власний шар обирають, коли шаблонів і логіки стільки, що штатний рендеринг стає тісним.
Етапи роботи: аудит шаблонів, схема, збірка, перевірка
Робота починається не з верстки, а з аудиту: нова тема має лягти на наявну структуру контенту, а не вимагати переписати матеріали. Інвентаризація займає від половини дня і одразу показує, де розходяться очікування замовника й реальний стан шаблонів.
- Аудит шаблонів. Обходимо каталог теми, збираємо всі файли розмітки, відзначаємо ланцюжки наслідування, дубльовані блоки й фрагменти, на які вже ніхто не посилається. Результат — карта залежностей і список ризиків.
- Звірка контенту й схеми шаблонів. Зіставляємо поля в метаданих сторінок з тим, що фактично читає розмітка. Знаходимо поля без виводу й змінні без джерела: це головна причина того, що блоки «з'їхали» після зміни теми.
- Проєктування схеми. Фіксуємо базовий каркас, багаторазово використовувані фрагменти, набори й порядок наслідування. Схема узгоджується до першого рядка розмітки — правки на цьому етапі дешевші в рази.
- Збірка. Розмітка пишеться за схемою, повтори виносяться в загальні блоки, шаблони кешування налаштовуються так, щоб редактор бачив зміни відразу, а відвідувач не чекав перезбірки.
- Регресійна перевірка. Проганяємо типові сторінки, стрічку, пошук, пагінацію, форми й метадані для соцмереж. Кожен шлях перевіряється до і після — розбіжності фіксуються протоколом.
- Передача теми. Віддаємо репозиторій з історією, коментарями в шаблонах і описом схеми, окремо навчаємо редакторів: як додати сторінку, блок, зображення, не зламавши розмітку.
Такий порядок дає передбачуваний результат: до моменту верстки спірних рішень не залишається, а після передачі редактори працюють з контентом без участі розробника.
Що залишається у замовника: шаблони, схеми й регламенти
Перевірка приймання в нас іде не за «сайт відкривається», а за тим, чи може команда замовника змінити будь-яку сторінку й блок без нас. Комплект нижче перевіряємо наживо: відкриваємо репозиторій, правимо тестовий текст, викладаємо, відкочуємо.
- Вихідники теми — репозиторій з повною історією змін, окремі гілки під стабільну й робочу лінії, інструкція локального запуску на тестовому стенді.
- Схема шаблонів — карта наслідування Twig: який шаблон базовий, які блоки перевизначають вкладені, звідки кожен фрагмент бере дані.
- Карта конфігурації — де лежать налаштування Pico CMS, що змінюється на рівні оточення, а що потребуватиме правки шаблонів.
- Регламент правок — порядок внесення: гілка, перевірка на стенді, погодження, викладка; хто відповідає за випуск і як відкотитися на попередню версію.
- Документація з контенту — як створити сторінку, обов'язкові поля метаданих, правила розмітки, зберігання й оптимізація зображень.
- Дизайн-токени — кольори, відступи й типографіка винесені в змінні: зміна фірмового стилю не чіпає структуру шаблонів.
- Чекліст приймання — шляхи й сценарії з очікуваною поведінкою, за якими замовник сам приймає правки.
Супровід після передачі не обов'язково залишається за нами: інженер, знайомий з Twig, входить у проєкт за цими документами. На практиці команда замовника закриває правки контенту й верстки самостійно вже з другої ітерації.
Кейс: редактори публікують без участі розробника
Сайт на Pico CMS зберігає контент у markdown-файлах, тому тексти редактори писали самі. Оформлення жило окремо: щоб поставити блок із цитатою, змінити порядок розділів або додати банер до розділу, доводилося правити шаблони теми й чекати на розробника. Кожна така правка йшла через завдання, перевірку й викладку.
До переробки сім із десяти змін на сторінці проходили через інженера, а випуск матеріалу займав три-чотири дні: редактор готував текст, потім чекав на верстку. У підтримку надходило близько двадцяти звернень на місяць, половина — про зовнішній вигляд сторінок.
Що змінили
Тему зібрали заново як набір готових блоків з обмеженими налаштуваннями: вирівнювання, розмір заголовка й кількість колонок вибираються зі списку, а не задаються вручну.
Редактор збирає сторінку з блоків і відразу бачить результат — зламати верстку або відвести її від фірмового стилю він не може. Файли контенту залишилися звичайним markdown, тому стара розмітка не загубилася.
Що стало
- Частка правок, що потребують розробника, — із семи з десяти до однієї з десяти.
- Час випуску матеріалу — із трьох-чотирьох днів до кількох годин у межах робочого дня.
- Звернення до підтримки щодо верстки скоротилися втричі за перший місяць.
Додатковий ефект — передбачуваність: нові блоки додаються в тему окремо й не зачіпають уже опубліковані сторінки. Оновлення контенту перестало бути вузьким місцем, а редактори планують публікації за календарем, а не за готовністю верстки.
Технічні сумніви перед стартом і відповіді на них
Перед стартом замовники ставлять ті самі запитання: що буде з кастомною темою при оновленні рушія, чи переживе вона переїзд на інший сервер, чи не загубляться адреси проіндексованих сторінок.
Нижче — короткі відповіді за кожним пунктом; якщо у вашому випадку залишаються сумніви, розберемо їх на етапі оцінки.
Тему проєктуємо так, щоб її код був відділений від ядра Pico CMS: шаблони й стилі лежать у своїй папці, розширення підключаються штатними механізмами, а не правками у файлах рушія. Саме це визначає, у що обійдуться подальші оновлення й переїзд.
Що буде з темою при оновленні рушія?
Оновлення ставиться поверх: перевизначення в окремій папці не конфліктують із ядром, бо ядро ми не чіпаємо. Перед цим знімаємо резервні копії й проганяємо тему на тестовому оточенні — відкат у разі проблеми займає хвилини.
Як пройде перенесення на інший сервер?
Контент і тема переносяться разом з історією змін, переверстка не потрібна. Змінюються лише шлях, права на запис і налаштування вебсервера — їх перевіряємо за списком, щоб після переїзду нічого не поїхало.
Чи збережуться адреси сторінок?
Так, якщо структуру файлів і правила маршрутизації змінювати послідовно. Під час перебудови розділів налаштовуємо перенаправлення зі старих адрес і перевіряємо їх списком — пошукова видача й зовнішні посилання продовжують працювати.
Хто відповідає за сумісність шаблонів?
Ми. Сумісність шаблонів на Twig з актуальною гілкою рушія — наша зона відповідальності: під час оновлення перевіряємо кожен шаблон, правимо застарілі конструкції й фіксуємо порядок дій у регламенті, щоб наступне оновлення йшло за відпрацьованим сценарієм.
Чим перевизначення шаблону відрізняється від плагіна?
Перевизначення шаблону й плагін — різні точки розширення, і плутати їх дорого. Перше підміняє файл теми: Twig бере вашу версію замість батьківської, а дані приходять у неї вже готовими.
Друге підписується на події ядра й втручається в порядок обробки запиту — до виводу сторінки, під час розбору розмітки, під час збірки меню.
Порядок обробки задається пріоритетом підписок: ядро викликає плагіни у відомій послідовності, тому один плагін бачить результат роботи іншого. Шаблон у цей конвеєр не вбудовується — він отримує те, що вже зібрано.
Звідси й різниця в конфліктах: плагіни можуть переписувати дані одне одного, а перевизначення конкурують лише за один і той самий файл.
Вибір між ними зводиться до того, що саме змінюється:
| Що змінюємо | Перевизначення шаблону | Плагін |
|---|---|---|
| Верстку й розмітку сторінки | Точково, за файлом теми | Зайвий шар |
| Дані, маршрути, поля | Немає доступу до джерела | Через події ядра |
| Порядок обробки запиту | Не бере участі | Керує пріоритетом |
| Поведінку при оновленні ядра | Зберігається | Потрібна перевірка сумісності |
| Поведінку при зміні теми | Втрачається | Зберігається |
Практичне правило просте: змінюється вивід — перевизначаємо шаблон, змінюються дані або логіка — пишемо плагін. Тримати і те й інше в одному місці означає платити двічі при кожному оновленні.
Коли шари розділені, оновлення ядра не затирає верстку, а зміна теми не ламає функціональність — розширення перестають конфліктувати між собою.
Що надіслати для оцінки: склад вихідних даних
Оцінка теми для Pico CMS залежить не від кількості сторінок, а від стану коду й контенту. Коли на руках копія сайту й зрозумілий перелік шаблонів, ми рахуємо роботи за фактом, а не за здогадками, і повертаємося з планом і строками за один захід, без серії уточнюючих листів.
- Доступи до копії сайту: окремий стенд з тим самим набором розширень, що на бойовому, плюс доступ до файлів теми й до бази, якщо контент зберігається не лише в текстових файлах.
- Поточна тема повністю — архів або репозиторій: шаблони Twig, партіали, стилі, скрипти, службові налаштування. Не вичавка «тільки те, що правимо»: зв'язки між шаблонами видно лише в повному дереві.
- Перелік плагінів і сторонніх вставок із позначкою, які критичні. Це відразу показує ділянки, де логіку доведеться переписувати під нову розмітку.
- Приклади сторінок за типами: головна, список, картка, матеріал, форма, сторінка помилки. Достатньо 5–10 адрес, щоб оцінити наслідування шаблонів і загальні блоки.
- Обмеження оточення: версія PHP і набір розширень, ліміти пам'яті й часу виконання, схема кешування, роздача статики.
- Макети й вихідники дизайну, якщо тема змінюється візуально, — з мобільними роздільними здатностями й станами елементів.
- Інваріанти, які не можна втратити під час перенесення: адреси сторінок, метатеги, мікророзмітка, правила перенаправлень.
- Пріоритети: які розділи потрібні першими, а що може зачекати до наступного етапу.
Якщо чогось зі списку немає — це не блокер. Опишіть, що вже є, решту зберемо разом на дзвінку: обговоримо завдання й повернемося зі складом робіт, оцінкою та планом.







