מדריך מלא להגדרת אתרים רב-לשוניים ב-Sulu Webspaces

תמיכה רב-לשונית ב-Sulu אולי נראית מורכבת, אבל היא לא חייבת להיות. אנחנו מגדירים Webspace ולוקליזציה במפתח מלא, כך שלכל שפה יש כתובות URL משלה ותוכן עצמאי. הצוות שלנו מטפל בכל המחזור—מהתצורה ועד התמיכה—ומבטיח פתרון אמין ללא פספוס מועדים.

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
מדריך מלא להגדרת אתרים רב-לשוניים ב-Sulu Webspaces
בינוני
~2-3 ימים

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

שאלות נפוצות

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

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

תארו לעצמכם שיש לכם אתר Sulu ברוסית וצריך להוסיף אנגלית, אבל כתובות ה-URL עבור כל שפה צריכות להיות שונות — ru.example.com ו-en.example.com. אתם מחפשים, מוצאים את התיעוד של Sulu על Webspace, אבל נתקלים בניואנסים: איך להעתיק נכון את מבנה העמודים מבלי לאבד נתונים? איך להגדיר hreflang כך שגוגל לא תתלונן? טעות אופיינית היא דילוג על הפקודה sulu:webspace:copy-locale, שלאחריה התוכן מוכפל וה-SEO נשבר. עברנו את הדרך הזו עשרות פעמים ואספנו קונפיגורציות מוכנות, הסברים וטיפים. הזמינו הגדרת אתר רב-לשוני וקבלו פתרון סוהר.

הבעיה: רב-לשוניות ב-Sulu נראית מורכבת, אבל היא לא

לקוחות מגיעים לעיתים קרובות עם השאלה: "איך להכין אתר ברוסית ובאנגלית כך שהתוכן יהיה עצמאי וכתובות ה-URL יהיו נקיות?" צברנו ניסיון מעשי בהגדרת Sulu ופיתחנו גישה שעובדת ללא הפתעות. להלן קונפיגורציות מוכנות, הסברים וטיפים. שימוש ב-Webspace חוסך עד 30% מהזמן בהשוואה לפתרונות מותאמים אישית המבוססים על Symfony.

איך Webspace ורב-לשוניות עובדים ב-Sulu

Sulu בונה רב-לשוניות ורב-אתרים סביב הקונספט של Webspace. Webspace אחד — אתר אחד עם קבוצת שפות ופורטלים (תחומי משנה/קידומות URL). מספר Webspace במופע יחיד — רב-אתר מלא עם backoffice משותף ותוכן עצמאי. כפי שנכתב בתיעוד הרשמי של Sulu, ה-Webspace הוא צומת השורש של עץ התוכן.

רכיב תיאור
Webspace אתר לוגי (example.com, blog.example.com)
Portal וריאנט גישה ל-Webspace (production, staging, dev)
Localization שפת תוכן (ru, en, de)
URL קישור בין שפה לדומיין או לנתיב

Webspace אחד יכול להיות מוגש מכמה דומיינים. ההפך אינו אפשרי — דומיין אחד תמיד שייך ל-Webspace יחיד.

איך להגדיר Webspace רב-לשוני? מדריך שלב-אחר-שלב

  1. צרו קונפיגורציית XML ב-config/packages/webspaces/. דוגמה לאתר ראשי עם שלוש שפות (רוסית כברירת מחדל):
<webspace xmlns="http://schemas.sulu.io/webspace/webspace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.sulu.io/webspace/webspace http://schemas.sulu.io/webspace/webspace-1.1.xsd">
    <name>Main Site</name>
    <key>main</key>
    <localizations>
        <localization language="ru" default="true" xDefault="true"/>
        <localization language="en"/>
        <localization language="de"/>
    </localizations>
    <shadow-base-language>ru</shadow-base-language>
    <default-templates>
        <default-template type="page">default</default-template>
        <default-template type="home">homepage</default-template>
    </default-templates>
    <templates>
        <template type="page">default</template>
        <template type="page">article</template>
        <template type="home">homepage</template>
    </templates>
    <excluded-templates>
        <excluded-template>overview</excluded-template>
    </excluded-templates>
    <portals>
        <portal>
            <name>Main</name>
            <key>main</key>
            <environments>
                <environment type="prod">
                    <urls>
                        <url language="ru" redirect="false">example.com</url>
                        <url language="en">en.example.com</url>
                        <url language="de">de.example.com</url>
                    </urls>
                </environment>
                <environment type="stage">
                    <urls>
                        <url language="ru">stage.example.com</url>
                    </urls>
                </environment>
                <environment type="dev">
                    <urls>
                        <url language="ru">example.localhost</url>
                        <url language="en">en.example.localhost</url>
                    </urls>
                </environment>
            </environments>
        </portal>
    </portals>
</webspace>
  1. הריצו אתחול:
php bin/console cache:clear
php bin/console sulu:document:initialize
php bin/console sulu:phpcr:init --user=admin
php bin/console sulu:webspace:copy-locale main --from=ru --to=en

<webspace xmlns="http://schemas.sulu.io/webspace/webspace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.sulu.io/webspace/webspace http://schemas.sulu.io/webspace/webspace-1.1.xsd"> <name>Main Site</name> <key>main</key> <localizations> <localization language="ru" default="true" xDefault="true"/> <localization language="en"/> <localization language="de"/> </localizations> <shadow-base-language>ru</shadow-base-language> <default-templates> <default-template type="page">default</default-template> <default-template type="home">homepage</default-template> </default-templates> <templates> <template type="page">default</template> <template type="page">article</template> <template type="home">homepage</template> </templates> <excluded-templates> <excluded-template>overview</excluded-template> </excluded-templates> <portals> <portal> <name>Main</name> <key>main</key> <environments> <environment type="prod"> <urls> <url language="ru" redirect="false">example.com</url> <url language="en">en.example.com</url> <url language="de">de.example.com</url> </urls> </environment> <environment type="stage"> <urls> <url language="ru">stage.example.com</url> </urls> </environment> <environment type="dev"> <urls> <url language="ru">example.localhost</url> <url language="en">en.example.localhost</url> </urls> </environment> </environments> </portal> </portals> </webspace> מעתיק את מבנה עץ העמודים משפה אחת לאחרת — נוח בעת הוספת שפה חדשה לאתר שכבר מאוכלס. ללא פקודה זו, היה צריך ליצור עמודים מאפס בכל שפה.

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

מהם Shadow Pages ואיך להשתמש בהם?

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

$document = $this->documentManager->find('/cmf/main/contents/about', 'en');
$document->setShadowLocale('ru');
$document->setShadowLocalesEnabled(true);
$this->documentManager->persist($document, 'en');
$this->documentManager->flush();

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

אילו אסטרטגיות URL לשפות תומכת Sulu?

Sulu תומכת בשלוש אפשרויות הגדרת URL:

אסטרטגיה דוגמה מתי להשתמש
תחומי משנה ru.example.com, en.example.com מיקוד גיאוגרפי (hreflang עם x-default)
קידומת נתיב example.com/ru, example.com/en קל יותר להגדרה, דומיין יחיד
דומיינים נפרדים example.ru, example.com למותגים עם דומיינים שונים

עבור SEO, הקפידו להוסיף hreflang ב-php bin/console cache:clear php bin/console sulu:document:initialize php bin/console sulu:phpcr:init --user=admin php bin/console sulu:webspace:copy-locale main --from=ru --to=en (ראו תיעוד MDN):

{% for locale in ['ru', 'en', 'de'] %}
    <link rel="alternate" hreflang="{{ locale }}" href="{{ sulu_content_path(null, webspace, locale) }}">
{% endfor %}
<link rel="alternate" hreflang="x-default" href="{{ sulu_content_path(null, webspace, 'ru') }}">

מחליף שפות ב-Twig מומלץ ליישם תוך התחשבות ב-locales הזמינים ובמאפיין sulu:webspace:copy-locale — אנו מספקים קוד זה כחלק מההגדרה.

מה כלול בהגדרת אתר Sulu רב-לשוני?

אנו מספקים:

  • הגדרת Webspace עם ה-locales והפורטלים הנדרשים
  • הגדרת אסטרטגיית URL (תחומי משנה, קידומת, דומיינים נפרדים)
  • יישום מחליף שפות ו-hreflang
  • הגדרת עמודי צל עבור קטעים שאינם ניתנים לתרגום
  • הרשאות גישה לעורכים לפי Webspace
  • תיעוד תפעולי
  • הדרכת עורכים לניהול תוכן רב-לשוני
  • אחריות ל-30 יום לפעולה תקינה

למה להפקיד בידינו את ההגדרה?

אנו עובדים עם Sulu מאז הקמתה והשלמנו למעלה מ-15 פרויקטים רב-לשוניים. המהנדסים שלנו הם תורמים לקהילת Sulu ומכירים את כל המלכודות. אנו מבטיחים שהגדרה מבוססת Webspace מהירה פי 3 מפתרונות Symfony מותאמים אישית. צרו קשר לייעוץ — נבחן את הפרויקט שלכם תוך יום. הזמינו הגדרת אתר רב-לשוני וקבלו פתרון סוהר מוכן. עלות ההגדרה הרב-לשונית נמוכה בדרך כלל משכתוב המערכת מאפס. העלות נקבעת לאחר ניתוח.

לוח זמנים להגדרה

  • הוספת שפה שנייה לאתר קיים: 1–2 ימים.
  • הגדרת רב-אתר עם שני Webspace מאפס: 2–3 ימים.
  • הגדרה מלאה (3 שפות, 2 Webspace, עמודי צל, hreflang, ניווט): 4–5 ימים.

העלות מחושבת באופן אישי בהתאם למורכבות ולמספר השפות.