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

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

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

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

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

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

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

Часті запитання

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1467
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1317
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1014
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1276
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1019
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019

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

Уявіть: вам потрібен Property Editor, який відображає матрицю кольорів для бренд-стилів. Стандартний текстовий редактор не справляється, а готовий пакет з NuGet або відсутній, або не оновлювався з минулої версії Umbraco. Вихід — розробити власний кастомний пакет Umbraco, який ідеально вписується у вашу екосистему. Ми спеціалізуємося на розробці Umbraco-пакетів: від простих Property Editors до повноцінних секцій Backoffice з міграціями БД. Кастомний пакет — це NuGet-збірка, яка розширює ядро CMS через Composer-паттерн. Він включає сервіси, Notification Handlers, нові типи властивостей, дашборди та API-контролери. Ми маємо багаторічний досвід і накопичили бібліотеку типових рішень, але кожен новий проект унікальний. Якщо у вас є специфічні вимоги до введення даних — найімовірніше, знадобиться кастомний редактор. Згідно з офіційною документацією 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 — інструмент для збірки та публікації.