תארו לעצמכם שיש לכם שלושה דומיינים — mysite.ru, mysite.com, mysite.de. התקנות נפרדות של Craft CMS בכל אחד מהם מובילות לשכפול קוד, חוסר סנכרון תוכן ועלויות תחזוקה נוספות. הצוות שלנו, עם ניסיון של 10+ שנים, יישם מולטיסייטים עבור 30+ פרויקטים — מ-2 עד 8 שפות. בפרויקט עם שלושה דומיינים, הפחתנו עלויות ב-40–60% בהשוואה להתקנות נפרדות. אנו מציעים פתרון מוכח — הגדרת מולטיסייט של Craft CMS. אנו מבטיחים פעולה יציבה ואינדוקס נכון. במאמר זה נסקור את הארכיטקטורה, הגדרת Project Config, ניהול תוכן ולוקליזציה של שדות.
ארכיטקטורה: קבוצות אתרים, אתרים ודומיינים
ההגדרה מתחילה ביצירת קבוצות אתרים ואתרים. קבוצות מאחדות אתרים באופן לוגי (לדוגמה, "אתרים ראשיים" ו"מיקרוסייטים"). בכל קבוצה ניתן להגדיר מספר אתרים עם שפות, דומיינים ונתיבי URL שונים. תצורה סטנדרטית כוללת שלושה אתרים לרוסית, אנגלית וגרמנית. כל אחד מציין URL מלא, מה שמאפשר למנועי חיפוש לאינדקס את כל הגרסאות כראוי.
השתמשו ב-Project Config — קבצי YAML ב-config/project/sites/. דוגמה לאתר תלת-לשוני (כל שלושת הקבצים מאוחדים לקיצור):
---
# config/project/sites/mysite-ru.yaml
name: 'My Site RU'
handle: mySiteRu
language: ru-RU
primary: true
enabled: true
hasUrls: true
baseUrl: 'https://mysite.ru/'
# config/project/sites/mysite-en.yaml
name: 'My Site EN'
handle: mySiteEn
language: en-US
primary: false
enabled: true
hasUrls: true
baseUrl: 'https://mysite.com/'
# config/project/sites/mysite-de.yaml
name: 'My Site DE'
handle: mySiteDe
language: de-DE
primary: false
enabled: true
hasUrls: true
baseUrl: 'https://mysite.de/'
---לאחר יצירת האתרים, הגדירו את שרת האינטרנט. כל הדומיינים חייבים להצביע על שורש אחד:
server { server_name mysite.ru mysite.com mysite.de; root /var/www/mysite/web; # стандартный Craft Nginx конфиг } כעת, בכל סקשן, ציינו כיצד התוכן מתפשט בין האתרים. השוואת שיטות:
| שיטה | תיאור | מתי להשתמש |
|---|---|---|
# config/project/sites/mysite-ru.yaml name: 'My Site RU' handle: mySiteRu language: ru-RU primary: true enabled: true hasUrls: true baseUrl: 'https://mysite.ru/' # config/project/sites/mysite-en.yaml name: 'My Site EN' handle: mySiteEn language: en-US primary: false enabled: true hasUrls: true baseUrl: 'https://mysite.com/' # config/project/sites/mysite-de.yaml name: 'My Site DE' handle: mySiteDe language: de-DE primary: false enabled: true hasUrls: true baseUrl: 'https://mysite.de/' |
ערך נוצר עבור כל האתרים | תוכן אחיד, נדרשים רק תרגומי טקסט |
server { server_name mysite.ru mysite.com mysite.de; root /var/www/mysite/web; # стандартный Craft Nginx конфиг } |
רק עבור האתר שבו נוצר | תוכן ייחודי לכל דומיין |
all |
עבור אתרים באותה קבוצה | קבוצה נפרדת לאתרי קידום |
none |
עבור אתרים עם אותה שפה | מספר אתרים באותה שפה, אזורים שונים |
בחירת propagationMethod הנכון חוסכת עד 40% מזמן ניהול הערכים. דוגמה להגדרת סקשן עם siteGroup:
---
# config/project/sections/blog.yaml
propagationMethod: all
siteSettings:
mySiteRu:
hasUrls: true
uriFormat: 'blog/{slug}'
template: blog/_entry
mySiteEn:
hasUrls: true
uriFormat: 'en/blog/{slug}'
template: blog/_entry
mySiteDe:
hasUrls: true
uriFormat: 'de/blog/{slug}'
template: blog/_entry
כיצד לנהל לוקליזציה של שדות?
לכל שדה ב-Craft CMS יש מאפיין language. עבור מולטיסייט, זהו כלי מפתח. הגדרה נכונה של translationMethod מפחיתה את זמן עדכון התוכן ב-30–40%. לדוגמה, כותרות יכולות להיות שונות לכל אתר, בעוד תמונות נשארות משותפות. השוואת שדות אופיינית:
| שדה | translationMethod | תיאור |
|---|---|---|
propagationMethod: all |
site | כותרת ייחודית לכל אתר |
# config/project/sections/blog.yaml propagationMethod: all siteSettings: mySiteRu: hasUrls: true uriFormat: 'blog/{slug}' template: blog/_entry mySiteEn: hasUrls: true uriFormat: 'en/blog/{slug}' template: blog/_entry mySiteDe: hasUrls: true uriFormat: 'de/blog/{slug}' template: blog/_entry |
none | תאריך פרסום משותף |
translationMethod |
none | תמונה משותפת לכל הגרסאות |
title |
site | טקסט ייחודי לכל שפה |
publishDate |
site | URL ייחודי לכל אתר |
גישה זו עושה שימוש חוזר במדיה ובשדות עזר תוך שמירה על תוכן טקסטואלי ייחודי.
מתג שפה בתבניות
כדי לאפשר למבקרים לעבור בין גרסאות, הוסיפו בלוק לתבנית עם קישורים לערכים ממוקדים:
{# Список всех версий текущей страницы #}
<nav class="language-switcher">
{% for site in craft.app.sites.getAllSites() %}
{% set localeEntry = entry.getLocalized().site(site).one() %}
{% if localeEntry %}
<a href="{{ localeEntry.url }}" lang="{{ site.language | slice(0, 2) }}" {% if site.id == currentSite.id %}aria-current="page"{% endif %}>
{{ site.language | upper | slice(0, 2) }}
</a>
{% endif %}
{% endfor %}
</nav>
{# Контент текущего сайта (автоматически) #}
{% set posts = craft.entries().section('blog').all() %}
{# Явное указание сайта #}
{% set enPosts = craft.entries().section('blog').site('mySiteEn').all() %} תרגום מחרוזות ממשק
מחרוזות סטטיות מתורגמות דרך קבצים ב-heroImage:
// translations/ru/site.php
return [
'Read more' => 'Читать далее',
'Published on {date}' => 'Опубликовано {date}',
];ב-Twig, השתמשו בפילטר body:
{{ "Read more" | t('site') }}
{{ "Published on {date}" | t('site', { date: entry.postDate | date('d.m.Y') }) }} יתרונות על פני התקנות נפרדות
השוואה: מולטיסייט של Craft CMS חוסך עד 60% מזמן העדכון ומפחית את הסיכון לחוסר סנכרון תוכן. לפי מסמכי Craft CMS, Project Config מסנכרן הגדרות בין סביבות. פריסת שפה חדשה אורכת 2–4 שעות במקום ימים עם התקנות נפרדות. אינדוקס כל הגרסאות במנועי חיפוש מתרחש תוך 1–2 שבועות. כדי להרחיב את פרויקט האינטרנט שלכם, יישמו מולטיסייט — צרו קשר להערכת פרויקט מפורטת. המהנדסים שלנו יכינו פתרון מותאם אישית. קבלו ייעוץ על הגדרת מולטיסייט של Craft CMS.
מה כלול בהגדרת מולטיסייט מלאה?
הגדרה מקיפה כוללת:
- יצירת Project Config לכל האתרים והקבוצות
- קישור דומיינים והגדרת שרת אינטרנט
- הגדרת סקשן עם
slugאופטימלי - לוקליזציה של שדות והגדרת תרגום
- יישום מתג שפה
- בדיקות ונעילת תצורה
- אינטגרציה עם שירותים חיצוניים (מתרגמים, CDN) להאצת טעינת גרסאות ממוקדות
- תיעוד להוספת שפות חדשות
- תמיכה לאחר השקה
תהליך הגדרה מלא
אנו מבצעים הגדרת מולטיסייט ב-5 שלבים:
- עיצוב ארכיטקטורה — בחירת קבוצות, דומיינים ושפות. שקלו מבנה דומיינים והעדפות שפה של הקהל.
- יצירת Project Config לכל האתרים והסקשנים.
- הגדרת שרת אינטרנט ואינטגרציה עם אחסון.
- לוקליזציה של שדות והגדרת propagationMethod.
- פיתוח מתג שפה ובדיקות.
Project Config מאפשר פריסת אתרים חדשים בדקות, לא שעות — פי 2–3 מהר יותר מהזנה ידנית.
צרו קשר עם המהנדסים שלנו לביקורת פרויקט. קבלו ייעוץ על הגדרת מולטיסייט של Craft CMS.







