Craft CMS רב-אתר: הגדרה, לוקליזציה וניהול תוכן

הפרדת התקנות Craft CMS לכל דומיין מובילה לשכפול קוד וחוסר סנכרון תוכן. אנו מקימים ארכיטקטורת multisite, המאחדת את כל הגרסאות למערכת אחת עם localization של שדות וניהול תוכן. הצוות שלנו מספק את הפרויקט במפתח מלא—מתצורת Project Config ועד תמיכה מתמשכת.

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
Craft CMS רב-אתר: הגדרה, לוקליזציה וניהול תוכן
בינוני
~2-3 ימים

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

שאלות נפוצות

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

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

תארו לעצמכם שיש לכם שלושה דומיינים — 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 שלבים:

  1. עיצוב ארכיטקטורה — בחירת קבוצות, דומיינים ושפות. שקלו מבנה דומיינים והעדפות שפה של הקהל.
  2. יצירת Project Config לכל האתרים והסקשנים.
  3. הגדרת שרת אינטרנט ואינטגרציה עם אחסון.
  4. לוקליזציה של שדות והגדרת propagationMethod.
  5. פיתוח מתג שפה ובדיקות.

Project Config מאפשר פריסת אתרים חדשים בדקות, לא שעות — פי 2–3 מהר יותר מהזנה ידנית.

צרו קשר עם המהנדסים שלנו לביקורת פרויקט. קבלו ייעוץ על הגדרת מולטיסייט של Craft CMS.