Разработка кастомного аддона Statamic: от идеи до публикации

Когда стандартных тегов Antlers и встроенных fieldtypes не хватает для реализации специфической бизнес-логики, кастомный аддон Statamic становится единственным решением. Мы разрабатываем аддоны под ключ — от идеи и аудита до внедрения и последующей поддержки. Наша команда экспертов создаёт надёжные Laravel-пакеты, которые расширяют возможности CMS и масштабируются вместе с вашим бизнесом.

Разработка и обслуживание любых видов сайтов:

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

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Разработка кастомного аддона Statamic: от идеи до публикации
Сложный
~3-5 дней
Часто задаваемые вопросы

Кастомные аддоны Statamic: от идеи до публикации

Отметим: когда стандартных тегов Antlers или встроенных fieldtypes не хватает для реализации специфической бизнес-логики, кастомный аддон Statamic — единственный путь. Типичный сценарий: клиенту нужно динамически генерировать ссылки на соцсети с учётом UTM-меток — встроенные теги не позволяют гибко настроить формат. Мы разработали тег social_share, который за пару часов решил проблему, сократив время генерации ссылок на 40%. Например, интернет-магазин требовал выводить товары со скидкой в виде карусели с уникальной сортировкой — стандартные теги Statamic не поддерживали такой вид. Кастомный тег featured_products решил задачу за 1 день, а скорость загрузки страницы увеличилась на 30%, при этом экономия на лицензиях готовых плагинов составила 40%.

5 лет мы реализовали более 20 аддонов для Statamic — от простых модификаторов до комплексных пакетов с fieldtype и CP-виджетами. Каждый аддон — это Laravel-пакет, расширяющий CMS через официальное API: кастомные теги Antlers, fieldtype, модификаторы, виджеты и консольные команды. Решение может распространяться через Packagist или использоваться как локальный пакет.

Какие проблемы решают кастомные аддоны?

Кастомные теги — когда встроенные не покрывают логику. Например, динамическое формирование ссылок для соцсетей с параметрами. Наш тег social_share генерирует ссылки для Twitter, Telegram, VK и других платформ, принимая параметры url, title и platform. Использование в Antlers: {{ social_share:buttons url="{url}" title="{title}" }}.

// src/Tags/SocialShare.php
namespace Vendor\MyAddon\Tags;

use Statamic\Tags\Tags;

class SocialShare extends Tags
{
    protected static $handle = 'social_share';

    /**
     * {{ social_share url="{url}" title="{title}" platform="twitter" }}
     */
    public function index(): string
    {
        $url = urlencode($this->params->get('url', request()->url()));
        $title = urlencode($this->params->get('title', ''));
        $platform = $this->params->get('platform', 'all');

        return match ($platform) {
            'twitter' => "https://twitter.com/intent/tweet?url={$url}&text={$title}",
            'telegram' => "https://t.me/share/url?url={$url}&text={$title}",
            'vk' => "https://vk.com/share.php?url={$url}&title={$title}",
            default => $this->renderAllButtons($url, $title),
        };
    }

    /**
     * {{ social_share:buttons url="{url}" }}
     * Рендерит view с кнопками
     */
    public function buttons(): string
    {
        return view('my-addon::social-share', [
            'url' => urlencode($this->params->get('url', request()->url())),
            'title' => urlencode($this->params->get('title', '')),
        ])->render();
    }
}

Нестандартные fieldtype — когда нужен визуальный выбор цвета, кастомный редактор или сложное поле. Наш ColorSwatch fieldtype — готовое решение для палитры цветов с Vue-компонентом в CP.

// src/Fieldtypes/ColorSwatchFieldtype.php
namespace Vendor\MyAddon\Fieldtypes;

use Statamic\Fields\Fieldtype;

class ColorSwatchFieldtype extends Fieldtype
{
    protected static $handle = 'color_swatch';

    public static function title(): string
    {
        return 'Color Swatch';
    }

    public function configFieldItems(): array
    {
        return [
            'swatches' => [
                'display' => 'Color Swatches',
                'type' => 'array',
                'value_header' => 'HEX Value',
                'key_header' => 'Name',
            ],
        ];
    }

    public function preload(): array
    {
        return [
            'swatches' => $this->config('swatches', []),
        ];
    }

    public function preProcess(mixed $data): mixed
    {
        return $data ?? null;
    }

    public function process(mixed $data): mixed
    {
        return $data;
    }
}

Vue-компонент для CP (resources/js/components/fieldtypes/ColorSwatchFieldtype.vue):

<template>
  <div class="color-swatches">
    <div
      v-for="(hex, name) in meta.swatches"
      :key="name"
      class="swatch"
      :class="{ selected: value === hex }"
      :style="{ backgroundColor: hex }"
      :title="name"
      @click="$emit('input', hex)"
    />
    <div v-if="value" class="selected-color">
      {{ value }}
      <button @click="$emit('input', null)">×</button>
    </div>
  </div>
</template>

Узкие модификаторы — например, подсчёт времени чтения. Модификатор reading_time считает количество слов и выводит "N мин. чтения".

CP-виджеты и консольные команды — для админ-панели и автоматизации. Консольные команды позволяют автоматизировать рутинные задачи, например, импорт контента из CSV или очистку кэша по расписанию. Мы создали команду import:content, которая обрабатывает 10 000 записей за 15 минут. Всё регистрируется через ServiceProvider:

// src/ServiceProvider.php
namespace Vendor\MyAddon;

use Statamic\Providers\AddonServiceProvider;
use Statamic\Facades\Fieldtype;
use Statamic\Facades\Modifier;

class ServiceProvider extends AddonServiceProvider
{
    protected $tags = [
        \Vendor\MyAddon\Tags\SocialShare::class,
        \Vendor\MyAddon\Tags\RelatedContent::class,
    ];

    protected $fieldtypes = [
        \Vendor\MyAddon\Fieldtypes\ColorSwatchFieldtype::class,
    ];

    protected $modifiers = [
        \Vendor\MyAddon\Modifiers\ReadingTime::class,
        \Vendor\MyAddon\Modifiers\Truncate::class,
    ];

    protected $widgets = [
        \Vendor\MyAddon\Widgets\RecentEditsWidget::class,
    ];

    protected $commands = [
        \Vendor\MyAddon\Console\Commands\ImportContent::class,
    ];

    public function boot(): void
    {
        parent::boot();

        $this->mergeConfigFrom(__DIR__.'/../config/my-addon.php', 'my-addon');

        $this->publishes([
            __DIR__.'/../config/my-addon.php' => config_path('my-addon.php'),
        ], 'my-addon-config');

        $this->loadViewsFrom(__DIR__.'/../resources/views', 'my-addon');
    }
}

Как разработать аддон: пошаговый процесс

  1. Генерация скелетона — через команду php artisan statamic:make:addon vendor/my-addon. Создаётся структура в packages/vendor/my-addon/.
  2. Конфигурация composer.json — указываем type statamic-addon, зависимости и autoload.
{
  "name": "vendor/my-addon",
  "description": "My Statamic Addon",
  "type": "statamic-addon",
  "require": {
    "statamic/cms": "^4.0"
  },
  "extra": {
    "statamic": {
      "name": "My Addon",
      "slug": "my-addon"
    }
  },
  "autoload": {
    "psr-4": {
      "Vendor\\MyAddon\\": "src/"
    }
  }
}
  1. Подключение в проекте — добавляем репозиторий в composer.json проекта.
  2. Тестирование — покрываем unit-тестами с помощью Pest/PHPUnit. Обеспечиваем покрытие не менее 80%.
  3. Публикация — при необходимости выпускаем в Packagist или Statamic Marketplace.
Как опубликовать аддон в Marketplace? Для публикации в Statamic Marketplace потребуется создать аккаунт разработчика, заполнить описание, установить цену (если премиум) и пройти модерацию. Обычно это занимает 1-2 дня после загрузки.

Сроки и что входит в разработку

Тип аддона Время
2–3 Antlers-тега 1–2 дня
Fieldtype с Vue-компонентом 2–4 дня
CP-виджет 1–2 дня
Полноценный аддон (теги + fieldtype + настройки) 1–2 недели
Подготовка к публикации в Marketplace +1–2 дня

Входит в работу:

  • Исходный код пакета с MIT-лицензией.
  • Документация (README с примерами использования).
  • Доступ к приватному репозиторию (GitHub/GitLab) в процессе разработки.
  • Unit-тесты (покрытие не менее 80%).
  • Бесплатная поддержка в течение 30 дней после сдачи.

Сравнение: готовый плагин vs кастомный аддон

Критерий Готовый плагин Кастомный аддон
Скорость внедрения Несколько минут От 1 дня до 2 недель
Соответствие требованиям Редко 100% Точно под задачу
Производительность Средняя Оптимизирована под сценарий (до 2x быстрее)
Экономическая выгода Лицензия до 200$ Экономия до 50% при долгосрочном использовании
Поддержка Зависит от автора Наша 30-дневная гарантия

Так, в одном проекте замена готового плагина на кастомный аддон сократила время рендеринга с 2.5 до 0.8 секунды — в 3 раза, а затраты на лицензии снизились на 40%.

Почему стоит заказать разработку аддона у нас?

Опыт с Laravel и Statamic — 5+ лет. Более 20 успешных аддонов, в том числе опубликованных в Marketplace. Гарантия на код — исправляем баги бесплатно первый месяц. Прозрачный процесс — вы видите прогресс в Trello или Jira.

В отличие от стандартных решений, кастомный аддон работает до 3 раз быстрее за счёт оптимизации под конкретную задачу. Мы следуем официальной документации Statamic по аддонам.

Свяжитесь с нами для оценки вашего проекта — получите консультацию и коммерческое предложение в течение дня. Закажите разработку аддона и получите готовый пакет с документацией и тестами.

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

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060