הרחבות מותאמות אישית ל-Kirby CMS: Hooks, Routes ו-Panel ב-Vue 3

כאשר הלוגיקה העסקית חורגת מהתכונות הסטנדרטיות של Kirby CMS, עקיפות הופכות להכרחיות. אנחנו בונים תוספים מותאמים אישית שמרחיבים את הליבה מבלי לשנות את הקוד שלה, ומוסיפים hooks, routes וסוגי שדות Vue 3. הצוות שלנו מספק פרויקטים סוהריים—מהקונספט ועד לתמיכה—ומבטיח ביצועים יציבים ועדכונים חלקים.

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הרחבות מותאמות אישית ל-Kirby CMS: Hooks, Routes ו-Panel ב-Vue 3
בינוני
~3-5 ימים

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

שאלות נפוצות

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

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

הרחבת Kirby CMS: Hooks, Routes ופאנל Vue 3 מותאמים אישית

לקוח השיק חנות מקוונת על Kirby CMS ונתקל במגבלות: שדות מובנים לא תמכו בחיבור מוצר ל-CRM, ותמונות נדרשו להמרה ל-WebP. הכלים הסטנדרטיים חסרו גמישות — נאלצנו לכתוב תוסף. מצבים כאלה מתעוררים באופן קבוע כאשר הלוגיקה העסקית חורגת מהפונקציונליות המובנית.

התוספים שלנו יכולים להשתלב עם שירותים חיצוניים, להוסיף שדות מותאמים אישית לפאנל הניהול ב-Vue 3, לעקוף routes ל-API, או להריץ משימות רקע באמצעות hooks. לדוגמה, בעת פרסום מאמר, ליצור אוטומטית תמונות WebP ולשלוח הודעת Telegram. וכל זה מבלי לשנות את קוד המקור של Kirby, מה שמפשט עדכונים ומפחית את הסיכון לתקלות. אנו מפתחים תוספים מותאמים אישית — חבילות PHP שמרחיבות את ליבת ה-CMS מבלי לשנות את הקוד שלה. צרו קשר להערכה ראשונית של הפרויקט שלכם.

עם ניסיון של למעלה מ-5 שנים ויותר מ-50 פרויקטי Kirby מוצלחים, אנו מספקים תוספים חזקים. אנו מבטיחים תאימות ל-Kirby 4+ ומספקים תקופת תמיכה של 30 יום. פיתוח תוסף מותאם אישית מתחיל מ-$500 עבור hooks פשוטים ונע עד $5000 עבור אינטגרציות פאנל מורכבות.

איך לפתח תוסף מותאם אישית ל-Kirby?

טכנולוגיות: PHP 8.3, Kirby 4, Vue 3 (לפאנל), Composer, Docker. אנו משתמשים ב-Kirby::plugin() כדי לרשום הרחבות. מבנה התיקיות האופייני כולל index.php, lib/, templates/, assets/.

<?php // site/plugins/my-plugin/index.php
use Kirby\Cms\App;
use Kirby\Cms\Page;

App::plugin('vendor/my-plugin', [
    'options' => [
        'cache' => true,
        'apiKey' => null,
    ],
    'fields' => require __DIR__ . '/lib/fields.php',
    'methods' => require __DIR__ . '/lib/methods.php',
    'routes' => require __DIR__ . '/lib/routes.php',
    'hooks' => require __DIR__ . '/lib/hooks.php',
    'blueprints' => require __DIR__ . '/lib/blueprints.php',
    'translations' => [
        'ru' => require __DIR__ . '/lib/translations/ru.php',
        'en' => require __DIR__ . '/lib/translations/en.php',
    ],
]);

איך להימנע משאילתות N+1 ועומס על השרת?

ללא hooks מתאימים, כל בקשת עמוד מייצרת עשרות שאילתות SQL מיותרות. הגישה שלנו מיישמת caching ברמת התוסף: אנו מנקים את המטמון רק כאשר עמוד ספציפי משתנה, לא את כל האתר. זה מפחית את עומס השרת פי 3–5 — עד 80% במקרים מסוימים. בפרויקט אחד, אינטגרציה עם Meilisearch קיצרה את זמן החיפוש מ-2 שניות ל-50 אלפיות השנייה. קבלו ייעוץ לפרויקט שלכם.

<?php // lib/hooks.php

return [
    'page.create:after' => function (Page $page) {
        if ($page->intendedTemplate()->name() !== 'article') {
            return;
        }

        $url = urlencode(kirby()->site()->url() . '/sitemap.xml');
        @file_get_contents("https://www.google.com/ping?sitemap={$url}");
    },
    'page.update:after' => function (Page $newPage, Page $oldPage) {
        if (kirby()->cache('pages')->exists($newPage->id())) {
            kirby()->cache('pages')->remove($newPage->id());
        }
    },
    'file.create:after' => function (\Kirby\Cms\File $file) {
        if (!$file->isImage()) {
            return;
        }

        $file->thumb(['width' => 800, 'format' => 'webp']);
        $file->thumb(['width' => 400, 'format' => 'webp']);
    },
];

איך לשלב APIs חיצוניים באמצעות Routes מותאמים אישית?

לעתים קרובות אנו צריכים לשלוף נתונים ממערכות CRM או חיוב. באמצעות routes מותאמים אישית, אנו יוצרים נקודות קצה מאובטחות שמחזירות JSON או XML. בפרויקט אחד, בנינו חיפוש מוצרים באמצעות Meilisearch — תוצאות נמסרו ב-50 אלפיות השנייה במקום 2 שניות. זה פי 40 מהר יותר מחיפוש סטנדרטי.

אילו שדות מותאמים אישית ניתן להוסיף לפאנל הניהול?

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

<?php // lib/fields.php return [ 'colorpicker' => [ 'props' => [ 'value' => function ($value = '#000000') { return $value; }, 'presets' => function (array $presets = []) { return $presets; }, ], 'save' => function ($value): string { if (!preg_match('/^#[0-9A-Fa-f]{6}$/', $value)) { throw new \Exception('Invalid color format'); } return $value; }, ], ]; 
// assets/js/fields.js
panel.plugin('vendor/my-plugin', {
  fields: {
    colorpicker: {
      template: `
        <k-field v-bind="$props">
          <input type="color" :value="value" @input="$emit('input', $event.target.value)">
          <div class="presets">
            <button v-for="color in presets" :key="color" :style="{ background: color }" @click="$emit('input', color)" />
          </div>
        </k-field>
      `,
      props: {
        value: String,
        presets: Array,
      },
    },
  },
});

רשמו את הנכס ב-<?php // site/plugins/my-plugin/index.php use Kirby\Cms\App; use Kirby\Cms\Page; App::plugin('vendor/my-plugin', [ 'options' => [ 'cache' => true, 'apiKey' => null, ], 'fields' => require __DIR__ . '/lib/fields.php', 'methods' => require __DIR__ . '/lib/methods.php', 'routes' => require __DIR__ . '/lib/routes.php', 'hooks' => require __DIR__ . '/lib/hooks.php', 'blueprints' => require __DIR__ . '/lib/blueprints.php', 'translations' => [ 'ru' => require __DIR__ . '/lib/translations/ru.php', 'en' => require __DIR__ . '/lib/translations/en.php', ], ]); : <?php // lib/hooks.php return [ 'page.create:after' => function (Page $page) { if ($page->intendedTemplate()->name() !== 'article') return; $url = urlencode(kirby()->site()->url() . '/sitemap.xml'); @file_get_contents("https://www.google.com/ping?sitemap={$url}"); }, 'page.update:after' => function (Page $newPage, Page $oldPage) { if (kirby()->cache('pages')->exists($newPage->id())) { kirby()->cache('pages')->remove($newPage->id()); } }, 'file.create:after' => function (\Kirby\Cms\File $file) { if (!$file->isImage()) return; $file->thumb(['width' => 800, 'format' => 'webp']); $file->thumb(['width' => 400, 'format' => 'webp']); }, ]; .

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

למה תוספים מותאמים אישית עדיפים על שינויי ליבה?

שינויים ישירים בליבת Kirby מובילים לבעיות שדרוג: כל גרסה חדשה יכולה לדרוס את העריכות שלכם. תוספים חיים בתיקייה מבודדת משלהם ומשתמשים רק ב-API הציבורי. עם versioning סמנטי נכון, התוסף שלכם נשאר תואם לגרסאות חדשות ללא עבודה נוספת. זה חוסך זמן וכסף על תחזוקה.

השוואת גישות Caching

טבלה: גישות caching
גישה תוצאה זמן תגובה
ללא תוסף, מטמון גלובלי מנקה הכל על כל שינוי 2 שניות
עם תוסף, מטמון לפי עמוד מנקה רק את העמוד ששונה 0.4 שניות

מה כלול בפיתוח תוסף במפתחות מלאות

  • קוד מקור של התוסף עם תיעוד
  • הגדרת חבילת Composer (אופציונלי)
  • דוגמאות שימוש בשיטות ו-hooks מותאמים אישית
  • Migrations (במידת הצורך)
  • הוראות התקנה ותצורה
  • חודש תמיכה לאחר הפריסה

טעויות נפוצות בפיתוח תוספים

  • טיפול לא נכון במטמון — נקו רק את הרשומות ששונו.
  • התעלמות מ-versioning סמנטי — שובר תאימות בעדכונים.
  • קידוד קשיח של אפשרויות במקום שימוש ב-<?php // lib/fields.php return [ 'colorpicker' => [ 'props' => [ 'value' => function ($value = '#000000') { return $value; }, 'presets' => function (array $presets = []) { return $presets; }, ], 'save' => function ($value): string { if (!preg_match('/^#[0-9A-Fa-f]{6}$/', $value)) { throw new \Exception('Invalid color format'); } return $value; }, ], ]; — מסבך את התצורה.

תהליך העבודה

  1. ניתוח — אנו לומדים את הארכיטקטורה והדרישות הנוכחיות.
  2. עיצוב — מגדירים hooks, שיטות, שדות, routes. מסכמים איתכם.
  3. יישום — כותבים קוד ב-PHP 8.3 ו-Vue 3.
  4. בדיקות — בדיקות יחידה לתרחישים מרכזיים, בדיקה על staging.
  5. פריסה — הגדרה על השרת, אימות תאימות מטמון.

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

סוג תוסף לוחות זמנים
פשוט (שיטות + hooks) 1–3 ימים
עם שדה פאנל מותאם אישית (Vue) 3–6 ימים
מורכב (סעיף פאנל + API + מטמון) 1–2 שבועות

אנו ניתן הערכה מדויקת לאחר ניתוח הדרישות. הזמינו פיתוח תוסף — נכין מפרט טכני ונציע פתרון אופטימלי.