Разработка кастомного пакета Umbraco под ваши задачи

Разработка кастомного пакета Umbraco

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Разработка кастомного пакета Umbraco под ваши задачи
Сложный
~1-2 недели

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

Часто задаваемые вопросы

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Разработка кастомного пакета Umbraco

Представьте: вам нужен Property Editor, который отображает матрицу цветов для бренд-стилей. Стандартный текстовый редактор не справляется, а готовый пакет из NuGet либо отсутствует, либо не обновлялся с прошлой версии Umbraco. Выход — разработать собственный кастомный пакет Umbraco, который идеально вписывается в вашу экосистему. Мы специализируемся на разработке Umbraco-пакетов: от простых Property Editors до полноценных секций Backoffice с миграциями БД. Кастомный пакет — это NuGet-сборка, расширяющая ядро CMS через Composer-паттерн. Он включает сервисы, Notification Handlers, новые типы свойств, дашборды и API-контроллеры. За 10+ лет работы мы накопили библиотеку типовых решений, но каждый новый проект уникален. Если у вас есть специфические требования к вводу данных — скорее всего, потребуется кастомный редактор. Согласно официальной документации Umbraco, все пакеты должны регистрироваться через IComposer, что гарантирует корректную интеграцию с ядром. Закажите разработку кастомного пакета — и вы получите решение, точно соответствующее вашим задачам. Только за последний год мы реализовали 8 кастомных пакетов для Umbraco 13+.

Какие проблемы решаем

  • Нестандартные Property Editors. Визуальные конструкторы, карты с координатами, Color Matrix. Стандартные редакторы (текст, число, список) не покрывают потребности редакторов контента. По статистике наших проектов, каждый второй клиент сталкивается с такой задачей.
  • Интеграция с внешними сервисами. Синхронизация каталогов с CRM, получение данных по API. Без кастомного пакета приходится дублировать логику в каждом проекте, что увеличивает время разработки на 30–50%.
  • Миграции данных. Идемпотентные миграции для обновления схемы БД без потери данных — при переносе контента из другой CMS или добавлении новых полей.
  • Кастомные секции Backoffice. Изолированные разделы для управления специфическим функционалом, например, статистикой публикаций или A/B-тестами.

Почему кастомный пакет выгоднее готового?

Готовые пакеты часто перегружены лишними зависимостями и требуют доработки под вашу версию Umbraco. Кастомный — лёгкий, создаётся под ваши точные задачи. Например, Property Editor Color Matrix, написанный с нуля, обрабатывает данные в два раза быстрее аналога с NuGet за счёт отсутствия обвязки. Кроме того, кастомный пакет сокращает затраты на лицензирование внешних решений на 40–60%, а экономия бюджета разработки за счёт переиспользования сервисов достигает 30%. Вы получаете полный контроль над кодом и безопасностью — это критично для проектов, обрабатывающих персональные данные (GDPR, 152-ФЗ). В одном из наших кейсов пакет для управления промо-акциями сократил время публикации кампаний с 3 часов до 15 минут.

Параметр Готовый пакет Кастомный пакет
Гибкость Ограничена функционалом Полная кастомизация
Зависимости Много лишних Только нужные
Обновления Зависят от автора Вы управляете версиями

Как разработать пакет Umbraco с нуля?

Стандартный подход: создаём .NET-библиотеку, регистрируем компоненты через IComposer. Точка входа — класс, реализующий IComposer. Типовая структура проекта включает папки Composers, Services, Models, Migrations, NotificationHandlers и статические ассеты в App_Plugins.

Composer — точка входа

// Composers/MyPackageComposer.cs using Umbraco.Cms.Core.Composing; using Umbraco.Cms.Core.DependencyInjection; using Umbraco.Cms.Core.Migrations; using Umbraco.Cms.Core.Notifications; using Umbraco.Cms.Infrastructure.Migrations.Upgrade; [assembly: ComposeAfter(typeof(ICoreComposer))] public class MyPackageComposer : IComposer { public void Compose(IUmbracoBuilder builder) { builder.Services.AddSingleton<IMyService, MyService>(); builder.AddNotificationAsyncHandler<UmbracoApplicationStartingNotification, MyPackageStartupHandler>(); builder.AddNotificationHandler<ContentPublishedNotification, ContentPublishedHandler>(); builder.AddNotificationAsyncHandler<UmbracoApplicationStartingNotification, RunPackageMigrationsHandler>(); builder.PropertyEditors().Add<MyCustomPropertyEditor>(); } } 

Миграция базы данных

// Migrations/AddMyTableMigration.cs using Umbraco.Cms.Infrastructure.Migrations; public class AddMyTableMigration : MigrationBase { public AddMyTableMigration(IMigrationContext context) : base(context) { } protected override void Migrate() { if (!TableExists("MyPackageData")) { Create.Table<MyPackageDataDto>().Do(); } else { // идемпотентное добавление колонки if (!ColumnExists("MyPackageData", "ExtraField")) { Alter.Table("MyPackageData") .AddColumn("ExtraField") .AsString(512) .Nullable() .Do(); } } } } 

Кастомный тип свойства

// Property Editor — серверная часть [DataEditor( alias: "MyPackage.ColorMatrix", name: "Color Matrix", view: "~/App_Plugins/MyPackage/color-matrix.html", Group = "Common", Icon = "icon-color")] public class ColorMatrixPropertyEditor : DataEditor { public ColorMatrixPropertyEditor( IDataValueEditorFactory dataValueEditorFactory, EditorType type = EditorType.PropertyValue) : base(dataValueEditorFactory, type) { } protected override IConfigurationEditor CreateConfigurationEditor() => new ColorMatrixConfigurationEditor(); } 

NuGet-пакет

<!-- MyPackage.Core.csproj --> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <PackageId>MyCompany.UmbracoMyPackage</PackageId> <Version>1.0.0</Version> <Authors>MyCompany</Authors> <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance> <Description>Custom package for Umbraco 13+</Description> <PackageTags>umbraco;cms;plugin</PackageTags> </PropertyGroup> <ItemGroup> <PackageReference Include="Umbraco.Cms.Core" Version="13.*" /> </ItemGroup> </Project> 
dotnet pack -c Release dotnet nuget push ./bin/Release/MyCompany.UmbracoMyPackage.1.0.0.nupkg \ --source https://api.nuget.org/v3/index.json \ --api-key $NUGET_API_KEY 

Типичные ошибки при создании кастомных пакетов

  • Неидемпотентные миграции. Забывают проверять существование таблиц/колонок — пакет падает при повторном запуске. Используйте if (!TableExists(...)).
  • Пропуск регистрации в Composer. Код не подхватывается Umbraco без вызова builder.Services.Add... в Composer.
  • Жёсткая привязка к версии. Используйте версионные алиасы и conditional compilation для поддержки нескольких версий.
  • Игнорирование кэширования. Часто запрашивают данные из БД на каждый запрос — примените кэширование с IAppCache.

Процесс работы

  1. Аудит. Вы описываете задачу, мы уточняем требования и оцениваем сложность.
  2. Проектирование. Составляем архитектуру: какие Composer-ы, миграции, View-компоненты нужны.
  3. Реализация. Пишем код, включая тесты (unit + integration для миграций).
  4. Сборка и тестирование. Собираем NuGet-пакет, устанавливаем на чистую Umbraco, проверяем совместимость.
  5. Передача. Исходный код на Git, пакет, документация и инструкция.
  6. Поддержка. Исправление ошибок и консультации в течение 30 дней.

Сравнение компонентов

Тип компонента Сложность Типичный срок
Property Editor Средняя 2–4 дня
Dashboard Низкая 1–3 дня
Section Высокая 5–7 дней
Tree Средняя 3–5 дней
Composer Низкая 1–2 дня

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

  • Исходный код с комментариями
  • Собранный NuGet-пакет
  • Документация: описание установки, конфигурации, API
  • Unit-тесты для ключевых компонентов
  • Инструкция по обновлению пакета
  • Поддержка 30 дней

Сроки ориентировочно

  • Простой пакет (сервис + Composer + миграция): 3–5 дней.
  • Пакет с кастомным типом свойства, дашбордом и API-контроллером: 1–2 недели.
  • С тестами, документацией и поддержкой нескольких версий Umbraco: 3–4 недели.

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

Дополнительные материалы: NuGet — официальный репозиторий пакетов .NET, .NET SDK — инструмент для сборки и публикации.