פיתוח חבילות Umbraco מותאמות אישית לצרכים שלך

הכלים הסטנדרטיים של Umbraco לא תמיד מכסים את הצרכים העסקיים הספציפיים, וחבילות מוכנות לרוב מיושנות. אנחנו מפתחים חבילות Umbraco מותאמות אישית למשימות שלכם, החל מ-Property Editors לא שגרתיים ועד לסעיפי Backoffice מלאים. הצוות שלנו מספק את הפרויקט במפתח מלא, תוך הבטחת אינטגרציה תקינה ותמיכה מתמשכת.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
פיתוח חבילות Umbraco מותאמות אישית לצרכים שלך
מורכב
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1502
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1306
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1049
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

פיתוח חבילת Umbraco מותאמת אישית

דמיינו שאתם צריכים עורך מאפיינים (Property Editor) שמציג מטריצת צבעים עבור סגנונות מותג. עורך הטקסט הסטנדרטי לא מספק את הצורך, וחבילה מוכנה מ-NuGet או שלא קיימת או שלא עודכנה מאז גרסת Umbraco האחרונה. הפתרון הוא לפתח חבילת Umbraco מותאמת אישית שמתאימה בדיוק למערכת שלכם. אנו מתמחים בפיתוח חבילות Umbraco: מעורכי מאפיינים פשוטים ועד לקטעי Backoffice מלאים עם מיגרציות מסד נתונים. חבילה מותאמת אישית היא אסמבלי NuGet שמרחיב את ליבת ה-CMS באמצעות תבנית Composer. היא כוללת שירותים, Notification Handlers, סוגי מאפיינים חדשים, לוחות מחוונים ובקרי API. עם ניסיון של למעלה מ-10 שנים, בנינו ספרייה של פתרונות סטנדרטיים, אבל כל פרויקט חדש הוא ייחודי. אם יש לכם דרישות ספציפיות להזנת נתונים, סביר להניח שאתם צריכים עורך מותאם אישית. לפי התיעוד הרשמי של Umbraco, כל החבילות חייבות להירשם דרך IComposer, מה שמבטיח אינטגרציה נכונה עם הליבה. — תיעוד Umbraco CMS הזמינו פיתוח חבילה מותאמת אישית — ותקבלו פתרון שעונה בדיוק על הצרכים שלכם. יישמנו 8 חבילות מותאמות אישית עבור Umbraco 13+. החל מ-$5,000 עבור חבילה פשוטה, אתם מקבלים הרחבה מותאמת ללא תלות מיותרת.

אילו בעיות אנחנו פותרים

  • עורכי מאפיינים לא סטנדרטיים. בוני ויזואליים, מפה עם קואורדינטות, מטריצת צבעים. עורכים סטנדרטיים (טקסט, מספר, רשימה) לא עונים על צרכי עורכי התוכן. לפי סטטיסטיקות הפרויקטים שלנו, כל לקוח שני נתקל במשימה זו.
  • אינטגרציה עם שירותים חיצוניים. סנכרון קטלוג עם CRM, שליפת נתונים דרך API. ללא חבילה מותאמת אישית, אתם צריכים לשכפל לוגיקה בכל פרויקט, מה שמגדיל את זמן הפיתוח ב-30–50%.
  • מיגרציות נתונים. מיגרציות אידמפוטנטיות לעדכון סכמת מסד הנתונים ללא אובדן נתונים — בעת העברת תוכן מ-CMS אחר או הוספת שדות חדשים.
  • קטעי Backoffice מותאמים אישית. קטעים מבודדים לניהול פונקציונליות ספציפית, כמו סטטיסטיקות פרסום או בדיקות A/B.

למה חבילה מותאמת אישית עדיפה על חבילה מוכנה

חבילות מוכנות לרוב עמוסות בתלות מיותרת ודורשות התאמות לגרסת Umbraco שלכם. חבילה מותאמת אישית היא קלה, בנויה בדיוק לצרכים שלכם. לדוגמה, עורך מטריצת צבעים שנכתב מאפס מעבד נתונים פי שניים מהר יותר מאשר מקביל NuGet בשל היעדר תקורה. בנוסף, חבילה מותאמת אישית מפחיתה עלויות רישוי לפתרונות חיצוניים ב-40–60%, וחיסכון בתקציב הפיתוח באמצעות שימוש חוזר בשירותים מגיע ל-30%. אתם מקבלים שליטה מלאה על הקוד והאבטחה — קריטי לפרויקטים המטפלים בנתונים אישיים (GDPR, 152-FZ). באחד המקרים שלנו, חבילה לניהול קמפיינים פרסומיים צמצמה את זמן פרסום הקמפיין מ-3 שעות ל-15 דקות. עם אחריות תאימות של 100%, החבילה שלכם עובדת בצורה חלקה עם כל גרסת Umbraco LTS.

פרמטר חבילה מוכנה חבילה מותאמת אישית
גמישות מוגבלת לפונקציונליות התאמה מלאה
תלות הרבה תוספות רק מה שצריך
עדכונים תלויים במפתח אתם שולטים בגרסאות

איך לפתח חבילת 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

טעויות נפוצות ביצירת חבילות מותאמות אישית

  • מיגרציות לא אידמפוטנטיות. שכחתם לבדוק קיום טבלה/עמודה — החבילה נכשלת בהרצה חוזרת. השתמשו ב-// 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>(); } } .
  • רישום Composer חסר. הקוד לא נקלט על ידי Umbraco ללא קריאה ל-// 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(); } } } } ב-Composer.
  • קשירת גרסה קשיחה. השתמשו בכינויים עם גרסה וקומפילציה מותנית לתמיכה במספר גרסאות.
  • התעלמות ממטמון. שאילתות תכופות למסד הנתונים בכל בקשה — יישמו מטמון עם // 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(); } .

תהליך העבודה

  1. בדיקת צרכים. אתם מתארים את המשימה, אנחנו מבהירים דרישות ומעריכים מורכבות. אנו מספקים תוכנית פרויקט מפורטת תוך 48 שעות.
  2. עיצוב. אנו מתארים את הארכיטקטורה: אילו Composers, מיגרציות, רכיבי View נדרשים. אתם מקבלים מפרט מובנה.
  3. יישום. אנו כותבים קוד, כולל בדיקות (יחידה + אינטגרציה למיגרציות). כל מודול ניתן לבדיקה עצמאית.
  4. בנייה ובדיקה. אנו בונים את חבילת NuGet, מתקינים אותה על Umbraco נקי ובודקים תאימות בכל הגרסאות הממוקדות.
  5. מסירה. קוד מקור ב-Git, חבילה, תיעוד והוראות. אנו פורסים על השרת שלכם לפי בקשה.
  6. תמיכה. תיקוני באגים וייעוץ למשך 30 יום. תמיכה מורחבת זמינה.

השוואת רכיבים

סוג רכיב מורכבות זמן טיפוסי
עורך מאפיינים בינוני 2–4 ימים
לוח מחוונים נמוך 1–3 ימים
קטע גבוה 5–7 ימים
עץ בינוני 3–5 ימים
Composer נמוך 1–2 ימים

מה כלול בפיתוח

  • קוד מקור עם הערות
  • חבילת NuGet מהודרת
  • תיעוד: התקנה, תצורה, תיאור API
  • בדיקות יחידה לרכיבים מרכזיים (כיסוי 95%+)
  • הוראות עדכון חבילה
  • תמיכה ל-30 יום עם תגובה מובטחת תוך 24 שעות

לוח זמנים משוער

  • חבילה פשוטה (שירות + Composer + מיגרציה): 3–5 ימים.
  • חבילה עם סוג מאפיין מותאם אישית, לוח מחוונים ובקר API: 1–2 שבועות.
  • עם בדיקות, תיעוד ותמיכה במספר גרסאות Umbraco: 3–4 שבועות.

לוחות זמנים מדויקים מחושבים בנפרד לאחר הערכת המשימה שלכם. למעלה מ-95% מהפרויקטים שלנו נמסרים בזמן. הזמינו פיתוח חבילה מותאמת אישית — צרו קשר, תארו את הפרויקט שלכם. קבלו הערכה ראשונית וייעוץ. אנו מבטיחים תאימות מלאה לגרסת Umbraco שלכם.

חומרים נוספים: NuGet — מאגר החבילות הרשמי של .NET, .NET SDK — כלי לבנייה ופרסום.