Statamic Pro מהקופסה יכול לשרת מספר אתרים מהתקנה אחת — אנו משתמשים בתכונה זו כדי לחסוך בזמן ובמשאבים של הלקוחות שלנו. תרחיש טיפוסי: חברה גדלה ונכנסת לשווקים חדשים. במקום חמש התקנות CMS נפרדות — התקנה אחת, ממשק ניהול אחד, עדכונים משותפים. נעבור על ההתקנה באמצעות פרויקט אמיתי: חנות מקוונת עם גרסאות רוסית, אנגלית וגרמנית. תלמדו כיצד לארגן תצורה, לנהל ערכים מתורגמים, וליישם מעבר שפות עם תגי SEO נכונים.
אילו בעיות Multisite פותר
משימה נפוצה: חנות מקוונת רוצה להיכנס לשוק הגרמני. היא זקוקה לדומיין חדש, תרגום תוכן, אבל העגלה והקטלוג משותפים. או שכל אתר הוא מותג נפרד עם מבנה משלו. Statamic פותר זאת דרך קובץ התצורה sites.php וניהול תוכן מרכזי.
הבעיה הראשונה — כפילות קוד. ללא multisite, היית צריך לפרוס התקנות נפרדות — להכפיל את השרתים, התצורות והעדכונים. Statamic שומר הכל במאגר אחד.
הבעיה השנייה — בלבול SEO. אם שתי שפות תלויות על דומיין אחד ללא hreflang, מנועי חיפוש עלולים לראות אותן ככפילויות. אנו מגדירים hreflang כראוי.
הבעיה השלישית — מעבר שפות. רגעים לא מובנים מאליהם ב-Antlers: איך להציג קישור לתרגום של העמוד הנוכחי אם הוא עדיין לא קיים? אנו פותרים זאת עם לוגיקת fallback.
איך אנחנו עושים את זה
התצורה הבסיסית — config/statamic/sites.php. ציינו handle, locale, url, ובאופציונלי direction. דוגמה לשלוש שפות:
return [
'sites' => [
'default' => [
'name' => 'My Site RU',
'locale' => 'ru_RU',
'url' => env('APP_URL', '/'),
'direction' => 'ltr',
'attributes' => ['lang' => 'ru'],
],
'english' => [
'name' => 'My Site EN',
'locale' => 'en_US',
'url' => env('SITE_EN_URL', 'https://mysite.com/en/'),
'direction' => 'ltr',
'attributes' => ['lang' => 'en'],
],
'german' => [
'name' => 'My Site DE',
'locale' => 'de_DE',
'url' => env('SITE_DE_URL', 'https://mysite.com/de/'),
],
],
];
"}לוקליזציה של Collections. בקובץ ה-YAML של ה-collection, ציינו אילו אתרים משתתפים:
# content/collections/blog.yaml sites: - default - english - german לאחר מכן, הערכים הופכים אוטומטית ל-multisite. תיקיות ב-return [ 'sites' => [ 'default' => [ 'name' => 'My Site RU', 'locale' => 'ru_RU', 'url' => env('APP_URL', '/'), 'direction' => 'ltr', 'attributes' => ['lang' => 'ru'], ], 'english' => [ 'name' => 'My Site EN', 'locale' => 'en_US', 'url' => env('SITE_EN_URL', 'https://mysite.com/en/'), 'direction' => 'ltr', 'attributes' => ['lang' => 'en'], ], 'german' => [ 'name' => 'My Site DE', 'locale' => 'de_DE', 'url' => env('SITE_DE_URL', 'https://mysite.com/de/'), ], ], ]; :
-
# content/collections/blog.yaml sites: - default - english - german(גרסה רוסית) -
content/collections/blog/(גרסה אנגלית) -
default/my-post.md(גרסה גרמנית)
אם לוקליזציה לאתר חסרה — Statamic מציג תוכן מהאתר ברירת המחדל (fallback). זה נוח כשהתרגום עדיין לא מוכן.
למה Statamic מהיר יותר מאשר CMS נפרד
Statamic מקצר את הזמן להוספת שפה חדשה פי 3 בהשוואה ל-CMS נפרד. החיסכון נובע מקוד בסיס אחד וניהול אחיד. תמיכה מובנית ב-hreflang ותוכן fallback מפשטים את ה-SEO. ותצורה גמישה דרך Antlers מאפשרת כל תרחיש מעבר.
איך להגדיר hreflang ומעבר שפות
מעבר שפות ב-Antlers. הגרסה המלאה עם בדיקת קיום תרגום:
{{ if entry }}
{{ collection:sites }}
{{ if sites_enabled }}
{{ foreach:localizations as="locale => localized_entry" }}
{{ if localized_entry }}
<a href="{{ localized_entry:url }}" lang="{{ locale }}" {{ if locale == {current_site:handle} }}aria-current="page"{{ /if }}>
{{ site:name }}
</a>
{{ /if }}
{{ /foreach:localizations }}
{{ /if }}
{{ /collection:sites }}
{{ /if }}לפי התיעוד הרשמי של Statamic, תג english/my-post.md הוא אלטרנטיבה קומפקטית יותר, אבל הוא לא בודק קיום תרגום, אז השתמשו בו בזהירות.
שאילתות PHP עם מודעות לאתר. קבלו ערכים רק עבור האתר הנוכחי:
use Statamic\Facades\Entry;
use Statamic\Facades\Site;
$posts = Entry::query()
->where('collection', 'blog')
->where('site', Site::current()->handle())
->get();
לאתר אחר, החליפו את ה-handle שלו. SEO: תגי hreflang. ב-head של ה-layout, הוסיפו:
{{ if entry }}
{{ locales }}
<link rel="alternate" hreflang="{{ locale }}" href="{{ url }}">
{{ /locales }}
<link rel="alternate" hreflang="x-default" href="{{ entry:url }}">
{{ /if }} התנהגות Fallback של Statamic
| מצב | התנהגות | דוגמה |
|---|---|---|
| ערך קיים רק בברירת המחדל | תוכן ברירת המחדל מוצג | מאמר רוסי מוצג באתר האנגלי אם אין גרסה אנגלית |
| ערך קיים במספר אתרים | כל אתר מקבל גרסה משלו | גרסאות רוסית ואנגלית עצמאיות |
| ערך לא קיים בשום מקום | עמוד 404 | אם הערך לא פורסם לאף אתר |
השוואה: Statamic Multisite מול CMS נפרד
| קריטריון | התקנת Statamic אחת | שני CMS נפרדים |
|---|---|---|
| עדכונים | עדכון composer אחד | פעמיים |
| תוכן | משותף או נפרד — גמיש | רק העתקה |
| קוד בסיס | אחיד | כפילות |
| מורכבות התקנה | בינונית | נמוכה יותר, אבל יותר שגרתית |
| אופטימיזציית SEO | hreflang מובנה | התקנה ידנית |
תהליך העבודה שלנו
- אנליטיקה — קביעת מספר השפות, הדומיינים, מדיניות התוכן המשותף.
- תצורה — הגדרת sites.php, הגדרת משתני סביבה.
- העברת תוכן — העברת ערכים עם ציון אתר.
- פיתוח תבניות — מעבר שפות, hreflang, globals.
- בדיקות — בדיקת fallback, מעבר, מהירות. ב-90% מהמקרים, הכל עובד בניסיון הראשון.
- פריסה — הגדרת ניתוב (Nginx/Cloudflare) לדומיינים.
לוח זמנים משוער
הגדרת multisite עם 2–3 שפות אורכת 1 עד 3 ימים, כולל בדיקות. העלות מחושבת באופן אישי לפי מורכבות התוכן ומספר התבניות. לפרויקטים עם 10,000+ ערכים, אנו ממליצים להקצות עד 5 ימים להעברה ואופטימיזציה.
מה כלול בעבודה
- הגדרת sites.php ומשתני סביבה.
- הגדרת לוקליזציה ל-collections ו-globals.
- פיתוח מעבר שפות ב-Antlers.
- יישום תגי hreflang.
- תיעוד להוספת שפה חדשה.
- ייעוץ לבחירת תכנית דומיינים.
איך להימנע מטעויות נפוצות
- שכחת לציין direction לערבית/עברית — טקסט נשבר.
- התעלמות מ-fallback — אם לוקליזציה חסרה, מנועי חיפוש עלולים להציג גרסה לא נכונה.
- אי בדיקת hreflang — Google Search Console יציג שגיאות "אין תגי חזרה".
איך להגדיר Multisite ללא כפילות קוד
הסוד הוא תצורה מרכזית ותבניות משותפות. כל תבניות ה-Antlers נמצאות בתיקיית german/my-post.md אחת, בעוד התוכן שונה לפי אתר. זה מפחית את נפח הקוד ב-40% בהשוואה ל-CMS נפרד.
למה להפקיד בידינו Multisite
אנו עובדים עם Statamic למעלה מ-7 שנים, מיישמים פרויקטים של multisite למסחר אלקטרוני ופורטלים ארגוניים (מעל 20 פרויקטים). אנו מבטיחים שכל השפות יונדסו כראוי, והמעבר מתרחש ללא טעינת עמוד (הודות ל-Livewire/Alpine). צרו קשר כדי לדון בפרויקט שלכם. הזמינו ביקורת על התצורה הנוכחית שלכם — נזהה צווארי בקבוק ונציע אופטימיזציה.







