Розробка кастомного плагіна для Pico CMS під ключ

Коли стандартних можливостей Pico CMS недостатньо, а редагувати ядро ризиковано — ми розробляємо кастомні PHP-плагіни, які розширюють функціональність без конфліктів під час оновлення. Наша команда реалізує проєкт під ключ: від аудиту та архітектури до впровадження та подальшої підтримки, забезпечуючи надійне та масштабоване рішення для вашого бізнесу.

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка кастомного плагіна для Pico CMS під ключ
Середній
~2-3 дні
Часті запитання

Навіщо потрібен кастомний плагін для Pico CMS

Ми — команда з 7-річним досвідом розробки на PHP, спеціалізуємося на Pico CMS з 2018 року. Реалізували понад 50 проєктів, включаючи професійну розробку плагінів для Pico CMS. Вартість простих плагінів стартує від 3000 грн, складних — від 15000 грн.

Уявіть: вам потрібно додати на всі сторінки Pico CMS кастомну форму зворотного зв'язку, яка надсилає дані в зовнішню CRM. Штатними засобами — тільки Twig-парціали та ручна обробка. Без плагіна доведеться правити ядро, що загрожує конфліктами при оновленні. Правильне рішення — написати ізольований PHP-плагін, який підключається через Composer. Плагін — це єдиний спосіб розширення Pico CMS без зміни ядра. Встановлення через Composer плагін робить оновлення простим. Ми займаємося цим більш ніж у 50 проєктах — від простих редиректів до повноцінних корпоративних порталів.

Редагування ядра Pico безпосередньо — шлях до технічного боргу. При наступному оновленні CMS ваші зміни перезапишуться, а якщо ви забудете, що правили, — сайт зламається. Плагін же живе в окремій директорії, підключається через Composer і не чіпає ядро. Це стандартна практика в сучасній PHP-розробці.

Згідно з офіційною документацією Pico, "плагіни є основним способом розширення функціональності" (https://github.com/picocms/Pico).

Як працює система подій Pico

Кожен плагін Pico — це клас, що наслідує AbstractPicoPlugin. Він підписується на події, які CMS генерує в строгому порядку: від завантаження конфігу до рендерингу Twig-шаблону. Методи-обробники отримують аргументи за посиланням (&$variable), що дозволяє модифікувати дані на льоту.

<?php
class MyPlugin extends AbstractPicoPlugin
{
    const API_VERSION = 3;
    protected $enabled = true;

    public function onConfigLoaded(array &$config): void
    {
        if (!isset($config['my_plugin'])) {
            $config['my_plugin'] = ['option' => 'default'];
        }
    }

    public function onMetaHeaders(array &$headers): void
    {
        $headers['redirect'] = 'Redirect';
        $headers['auth_required'] = 'AuthRequired';
    }

    public function onPageRendering(string &$templateName, array &$twigVariables): void
    {
        $meta = $twigVariables['meta'];
        if (!empty($meta['redirect'])) {
            header('Location: ' . $meta['redirect'], true, 302);
            exit;
        }
    }
}

Файл кладеться в plugins/MyPlugin/MyPlugin.php. Стандартна структура директорії:

plugins/ └── MyPlugin/ ├── MyPlugin.php ├── config.yml.template └── README.md 

Які події використовуються найчастіше?

Ось ключові точки входу для Pico 3.x. Ми використовуємо їх у 90% проєктів.

Подія Опис Типове застосування
onPluginsLoaded Усі плагіни завантажені Доступ до інших плагінів
onConfigLoaded Конфіг розібрано Зміна параметрів
onRequestUrl URL запиту відомий Редиректи, обмеження
onMetaHeaders Список YAML-заголовків Додавання метаполів
onContentParsed Markdown → HTML Вставка шорткодів
onPageRendering Перед Twig-рендерингом Додавання змінних

Приклад із практики: плагін авторизації за IP

public function onConfigLoaded(array &$config): void
{
    $this->allowedIps = $config['ip_restrict']['allowed'] ?? [];
    $this->restrictedPaths = $config['ip_restrict']['paths'] ?? [];
}

public function onRequestUrl(string &$url): void
{
    $clientIp = $_SERVER['REMOTE_ADDR'] ?? '';
    foreach ($this->restrictedPaths as $path) {
        if (str_starts_with($url, $path)) {
            if (!in_array($clientIp, $this->allowedIps, true)) {
                header('HTTP/1.1 403 Forbidden');
                echo 'Access denied';
                exit;
            }
        }
    }
}

Такий плагін корисний для закриття адмін-панелі або staging-оточення. Він працює на ранньому етапі — onRequestUrl — і блокує доступ до початку обробки контенту, що економить ресурси.

Шорткоди в Pico: як додати?

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

public function onContentParsed(string &$content): void {
    $content = preg_replace_callback(
        '/\[youtube\s+id="([a-zA-Z0-9_-]+)"\]/',
        static function (array $matches): string {
            $id = htmlspecialchars($matches[1], ENT_QUOTES);
            return sprintf(
                '<div class="video-embed"><iframe src="https://www.youtube.com/embed/%s" ' .
                'allowfullscreen loading="lazy" title="YouTube video"></iframe></div>',
                $id
            );
        },
        $content
    );
}

Типи плагінів: що ми вміємо?

Тип плагіна Складність Приклади
Обробник однієї події 1-2 дні Редирект за мета-полями, додавання Google Analytics
Кастомні Twig-функції 2-3 дні Форма зворотного зв'язку, слайдер на основі YAML
Інтеграція із зовнішнім API 3-5 днів Імпорт із CRM, WebHook на оновлення контенту
Комплексна бізнес-логіка від 5 днів Каталог з фільтрацією, управління доступом

Плагін на Pico розробляється в 3 рази швидше, ніж аналогічне розширення для WordPress, завдяки простій архітектурі подій та мінімалістичному ядру.

Які помилки допускають при розробці плагінів Pico?

  1. Неправильний порядок подій: наприклад, спроба використати onContentParsed до onPageRendering — контент ще не оброблено.
  2. Відсутність перевірки на існування масиву: $config['my_plugin'] може не бути — використовуйте ??.
  3. Використання глобальних змінних замість переданих за посиланням: це ламає ізоляцію.
  4. Забутий exit після редиректу: скрипт продовжує виконання, і ви отримаєте помилку заголовків.
  5. Відсутність тестів: плагін може зламатися при оновленні Pico.

Процес розробки

Ми дотримуємося чіткого регламенту, щоб ви отримали передбачуваний результат:

  1. Аналіз — ви описуєте завдання, ми уточнюємо деталі та оцінюємо терміни.
  2. Проєктування — визначаємо список подій, структуру конфігу та Twig-змінні.
  3. Розробка — пишемо код на PHP 8.1+ з урахуванням PSR-12, покриваємо тестами PHPUnit.
  4. Інтеграційне тестування — перевіряємо плагін на вашому хостингу або в середовищі, наближеному до продакшену.
  5. Здача — передаємо вихідний код з ліцензією MIT, документацію, конфіг-шаблон та звіт про тестування.

Що входить у роботу

  • Вихідний код плагіна з підтримкою Composer-встановлення
  • README з описом встановлення та налаштування
  • Приклад конфігу в YAML
  • Юніт-тести (PHPUnit) з покриттям не менше 80%
  • 30 днів безкоштовної підтримки: виправлення багів, консультації

Гарантії та підтримка

Ми гарантуємо сумісність з останніми версіями Pico та PHP, відсутність конфліктів з іншими плагінами завдяки ізольованій архітектурі. Кожен плагін проходить код-рев'ю та статичний аналіз. Уся Pico CMS розробка ведеться з урахуванням PSR-12. Якщо у вас є нестандартна задача — напишіть нам, обговоримо рішення. Щоб замовити плагін Pico, заповніть форму зворотного зв'язку. Отримайте консультацію по вашому проєкту — визначимо необхідні події та терміни за 1 годину.

Замовте розробку плагіна — ми проаналізуємо ваше завдання та запропонуємо оптимальне рішення протягом дня. Зв'яжіться з нами, щоб обговорити деталі.

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060