תבניות Kirby סטנדרטיות מובילות לרוב לשכפול קוד ולקשיי תחזוקה כאשר פרויקט גדל למאות עמודים. אופטימיזציה באמצעות סניפטים מודולריים וקונטרולרים היא המפתח לסקיילינג. קבלו ייעוץ לפרויקט שלכם — נעזור לתכנן את ארכיטקטורת התבניות.
אנו מפתחים תבניות Kirby מותאמות אישית ב-PHP באמצעות קוד נקי ללא מנועי תבניות. כל קובץ בתיקיית templates מטפל בסוג עמוד ספציפי. אבל איך לארגן קוד ביעילות, לעשות שימוש חוזר בבלוקים ולטפל בשדות מותאמים אישית? המהנדסים שלנו מדגימים עם דוגמאות אמיתיות: אתר תאגידי עם קטלוג של 2000 מוצרים וחנות מקוונת עם עורך בלוקים. ניסיון של למעלה מ-10 שנים ואחריות של 100% 만 만 만 מבטיחים שהפרויקט שלכם בידיים בטוחות. לפי התיעוד הרשמי של Kirby, תבניות הן קבצי PHP שמקבלים נתוני עמוד דרך קונטרולרים. צברנו פרקטיקות שמאיצות את הפיתוח ב-40% ומפחיתות את התקציב ב-30%.
היתרונות של גישה מודולרית
למה סניפטים מודולריים חוסכים זמן
כל סניפט מכסה אזור אחד — כותרת עליונה, כותרת תחתונה, כרטיס מוצר, בלוק תוכן. זה מפחית שכפול קוד ב-60% ומפשט את התחזוקה. כאשר העיצוב משתנה, צריך לערוך רק קובץ אחד במקום 10 תבניות. גישת הסניפטים יעילה פי 2.5 מתבניות מונוליטיות, וחוסכת עד 40% מזמן הפיתוח.
בעיות שנפתרות
- שכפול קוד — ללא סניפטים, אותו פלט מועתק בכל תבנית. שימוש בסניפטים מפחית שכפול ב-60%.
- סינון מורכב — לדוגמה, הצגת קטלוג מוצרים עם פג'ינציה ומסנני קטגוריות. אנו מיישמים זאת דרך קונטרולרים ופרמטרי URL.
- שדות לא סטנדרטיים — Kirby הוא שטוח, אבל אנחנו יודעים לעבוד עם מבנה, בלוקים ושדות קבצים כדי ליצור ממשקי ניהול גמישים.
- ביצועים — שאילתות לא מותאמות מאטות את האתר. אנו משתמשים בקאש ואינדוקס, ומפחיתים את זמני טעינת העמוד ב-50%.
ארכיטקטורת קונטרולר ותבנית
מתי להעביר לוגיקה לקונטרולר?
אם תבנית מכילה חישובים מורכבים, סינון או הכנת נתונים — הגיע הזמן להעביר אותם לקונטרולר. קונטרולר Kirby הוא פונקציה שמחזירה מערך של משתנים לתבנית. זה משפר את קריאות הקוד ואת יכולת הבדיקה, ומאפשר שימוש חוזר באותה לוגיקה בתבניות שונות. ניתן לשלב הזרקת תלויות ו-PSR-4 autoloading לפרויקטים גדולים יותר.
איך אנו יוצרים תבניות מותאמות אישית
אנו משתמשים בגישה: blueprint → קונטרולר → תבנית → סניפטים. דוגמה לעמוד מאמר:
# site/blueprints/pages/article.yml title: Статья fields: subtitle: type: text cover: type: files text: type: blocks הקונטרולר מעביר נתונים מעובדים לתבנית:
<?php // site/controllers/article.php
return function ($page) {
$subtitle = $page->subtitle()->or('Без подзаголовка');
$cover = $page->cover()->toFile();
$blocks = $page->text()->toBlocks();
return compact('subtitle', 'cover', 'blocks');
};התבנית מרכיבה הכל דרך סניפטים:
<?php snippet('header', ['title' => $page->title()]) ?>
<main>
<article>
<?php snippet('hero', ['cover' => $cover, 'subtitle' => $subtitle]) ?>
<?php snippet('content-blocks', ['blocks' => $blocks]) ?>
</article>
</main>
<?php snippet('footer') ?>כל סניפט מטפל באזור שלו. זה מאיץ את הפיתוח פי 2 בהשוואה לתבנית מונוליטית.
הצגת דוגמת קונטרולר מלאה
<?php snippet('catalog-filter', ['categories' => $categories, 'active' => $active]) ?> דוגמאות מעשיות
איך ליצור סניפט לסינון קטלוג?
בקונטרולר של עמוד המוצרים, אנו אוספים מוצרים מתיקיית # site/blueprints/pages/article.yml title: Статья fields: subtitle: type: text cover: type: files text: type: blocks . אנו משתמשים ב-<?php // site/controllers/article.php return function ($page) { $subtitle = $page->subtitle()->or('Без подзаголовка'); $cover = $page->cover()->toFile(); $blocks = $page->text()->toBlocks(); return compact('subtitle', 'cover', 'blocks'); }; או <?php snippet('header', ['title' => $page->title()]) ?> <main> <article> <?php snippet('hero', ['cover' => $cover, 'subtitle' => $subtitle]) ?> <?php snippet('content-blocks', ['blocks' => $blocks]) ?> </article> </main> <?php snippet('footer') ?> .
<?php snippet('catalog-filter', ['categories' => $categories, 'active' => $active]) ?> הסניפט content/products מציג רשימת קטגוריות עם class פעיל. עם פג'ינציה, זה נותן קטלוג מוכן ביום אחד.
טעויות נפוצות שיש להימנע מהן
- הצבת לוגיקה בתבנית במקום לחלץ אותה לקונטרולר. זה מסבך בדיקות ותחזוקה.
- אי טיפול בשדות ריקים — מוביל לשגיאות בפלט. השתמשו ב-
$kirby->collection()או$pages->find('products')->children(). - התעלמות מקאש — לאתרים עם הרבה עמודים (1000+), ללא קאש TTFB גדל ל-3 שניות.
עזר
סוגי שדות והמתודות שלהם
| סוג שדה | מתודות פלט | דוגמה |
|---|---|---|
| text | <?php snippet('catalog-filter', ['categories' => $categories, 'active' => $active]) ?> , catalog-filter.php |
->or() |
| files | ->isNotEmpty(), $page->field()->html(), ->kirbytext() |
$page->title()->html() |
| structure | ->toFile(), ->url() |
->crop() |
| blocks | $page->cover()->toFile()->crop(800, 400)->url() |
->toStructure() |
| date | ->count(), $page->gallery()->toStructure() |
->toBlocks() |
וריאנטים של שמות תבניות
| סיומת | מטרה | קובץ |
|---|---|---|
| (ללא) | ראשי | $page->text()->toBlocks() |
->toDate('d.m.Y') |
תצוגה מקדימה | ->isNotEmpty() |
$page->date()->toDate('Y-m-d') |
גרסת RSS | article.php |
.preview |
פלט JSON | article.preview.php |
Kirby בוחר אוטומטית את התבנית המתאימה לפי הקונטקסט. ניתן גם לציין במפורש: .rss.
התהליך והתמחור שלנו
תהליך העבודה
- ניתוח blueprints ודרישות שדות.
- עיצוב מערכת הסניפטים והקונטרולרים.
- יישום תבניות עם רספונסיביות.
- שילוב עורך בלוקים ובלוקים מותאמים אישית.
- בדיקה על סוגי עמודים שונים.
- פריסה ותיעוד.
מה כלול?
- קוד מקור של כל התבניות והסניפטים.
- תיעוד על מבנה השדות וההתקנה.
- גישה לריפוזיטורי ולמערכת הניהול.
- הדרכה לעורכים על שימוש בפאנל הניהול.
- תמיכה לחודש אחד לאחר המסירה.
לוח זמנים ועלות
תבנית טיפוסית לסוג עמוד אחד לוקחת 2 עד 3 ימים. סט מלא לאתר תאגידי לוקח 1 עד 2 שבועות. עלות תבנית מותאמת אישית אחת מתחילה ב-$500, וסט מלא מ-$2,000. חיסכון טיפוסי בתקציב בהשוואה ל-CMS אחרים יכול להגיע עד 30%. המומחים המוסמכים שלנו מבטיחים איכות עם ניסיון של למעלה מ-10 שנים.
צרו קשר כדי לדון בפרויקט שלכם — נכין הצעה מפורטת.







