מדריך שלב אחר שלב ל-MODX Contexts לריבוי אתרים

הפעלת אתרים מרובים על מנוע אחד הופכת לעיתים קרובות לכאוס של התקנות כפולות ועדכונים מתמידים. אנו מגדירים MODX contexts כך שתנהלו את כל הפרויקטים מפאנל אחד ללא עלויות נוספות. הצוות שלנו מספק הגדרת multisite במפתח מלא—מביקורת ועד תמיכה—ומבטיח פעילות יציבה וסקיילינג קל.

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

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

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

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

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

שאלות נפוצות

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

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

הגדרת Contexts של MODX לאתר רב-מערכתי

אתה צריך להריץ שלושה אתרים—רוסית, אנגלית ובלארוסית—כל אחד עם דומיין, תבניות ותוכן משלו. בדרך כלל זה אומר שלוש התקנות MODX: עדכונים משולשים, גיבויים וקונפיגורציות. Contexts של MODX פותרים את הבעיה הזו: מנוע אחד, מספר אתרים. ההתקנה אורכת 2–3 ימים במקום שבוע לשלוש התקנות נפרדות. לפי תיעוד MODX, contexts מספקים בידוד מלא ללא שכפול ליבה. המהנדסים שלנו עם ניסיון של 5+ שנים מבטיחים מבנה רב-מערכתי יציב. מעל 50 פרויקטים מוצלחים על MODX. חיסכון ממוצע בעלויות תמיכה של 30%, חיסכון באחסון עד 40%.

מה הם Contexts ולמה אתה צריך אותם?

Contexts הם סביבות מבודדות בתוך התקנת MODX אחת. לכל context יש הגדרות, משאבי שורש, תבניות ואפילו פרמטרי שפה משלו. השווה עם גישות אחרות:

גישה מורכבות תחזוקה ביצועים גמישות תוכן זמן פריסה
התקנות MODX נפרדות גבוהה (שלושה CMS) בינוני גבוהה 5–7 ימים
התקנה אחת + contexts נמוכה (CMS אחד) גבוה גבוהה 2–3 ימים
התקנה אחת + תיקיות משנה בינוני גבוה נמוכה (תוכן משותף) יום אחד

הגדרת context מהירה פי 3 מפריסת התקנות נפרדות. חיסכון באחסון עד 40%, עלויות תמיכה מופחתות ב-30% בממוצע בפרויקטים שלנו. בנוסף, אתה מקבל נקודת ניהול אחת: עדכוני MODX, תוספים ורכיבים מנוהלים באופן מרכזי.

איך להגדיר Contexts: מדריך שלב-אחר-שלב

יצירה והגדרה של Context

מערכת → Contexts → צור → מפתח en (לטינית קצרה בלבד). לאחר היצירה, הגדר פרמטרים:

Ключ: en
Имя: English Version
Настройки (Settings):
  base_url: /en/
  site_url: https://yourdomain.com/en/
  site_start: 55 (ID корневого ресурса)
  error_page: 56
  default_template: 3
  cultureKey: en
  locale: en_US.UTF-8

מעבר אוטומטי לפי דומיין

תוסף על אירוע Ключ: en Имя: English Version Настройки (Settings): base_url: /en/ site_url: https://yourdomain.com/en/ site_start: 55 (ID корневого ресурса) error_page: 56 default_template: 3 cultureKey: en locale: en_US.UTF-8 מחליף context בהתבסס על HTTP_HOST או URI:

$host = $_SERVER['HTTP_HOST'];
$uri = $_SERVER['REQUEST_URI'];
$contextMap = [
    'ru.company.com' => 'ru',
    'en.company.com' => 'en',
    'by.company.com' => 'by',
];
if (isset($contextMap[$host])) {
    $contextKey = $contextMap[$host];
    if ($modx->context->key !== $contextKey) {
        $modx->switchContext($contextKey);
    }
    return;
}
$prefixMap = ['/ru/' => 'ru', '/en/' => 'en', '/uk/' => 'uk'];
foreach ($prefixMap as $prefix => $contextKey) {
    if (strpos($uri, $prefix) === 0) {
        if ($modx->context->key !== $contextKey) {
            $modx->switchContext($contextKey);
        }
        return;
    }
}
הגדרות תוסף נוספות אם אתה צריך גם להחליף הגדרות שפה, השתמש ב-`$modx->cultureKey` בתוך התוסף. לשמירת מפת ה-context במטמון, שקול `modRegistry`.

קונפיגורציית Nginx לתת-דומיינים

server {
    listen 443 ssl http2;
    server_name ru.company.com en.company.com by.company.com;
    root /var/www/company.com;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTP_HOST $host;
        include fastcgi_params;
    }
}

משאבים וקישורים בין Contexts

כל משאב מקושר ל-context דרך שדה OnHandleRequest. כדי ליצור משאב ב-context $host = $_SERVER['HTTP_HOST']; $uri = $_SERVER['REQUEST_URI']; $contextMap = [ 'ru.company.com' => 'ru', 'en.company.com' => 'en', 'by.company.com' => 'by', ]; if (isset($contextMap[$host])) { $contextKey = $contextMap[$host]; if ($modx->context->key !== $contextKey) { $modx->switchContext($contextKey); } return; } $prefixMap = ['/ru/' => 'ru', '/en/' => 'en', '/uk/' => 'uk']; foreach ($prefixMap as $prefix => $contextKey) { if (strpos($uri, $prefix) === 0) { if ($modx->context->key !== $contextKey) { $modx->switchContext($contextKey); } return; } } :

$resource = $modx->newObject('modDocument');
$resource->set('pagetitle', 'About Us');
$resource->set('alias', 'about-us');
$resource->set('context_key', 'en');
$resource->set('template', 3);
$resource->set('parent', 55);
$resource->save();

לקישורים בין contexts, ציין את ה-context: server { listen 443 ssl http2; server_name ru.company.com en.company.com by.company.com; root /var/www/company.com; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTP_HOST $host; include fastcgi_params; } } encontext_key.

סנכרון הגדרות

להגדרות מערכת יש עדיפות: גלובלי > Context > Namespace. הגדרות context גוברות על גלובליות. דוגמה לקבלת URL עבור ה-context הנוכחי:

$siteUrl = $modx->getOption('site_url'); 

למה Contexts עדיפים על התקנות נפרדות?

  • חיסכון במשאבים: מסד נתונים אחד, ליבה אחת.
  • פאנל ניהול אחיד: נהל את כל האתרים מממשק אחד.
  • פריסה מהירה: context חדש ניתן להגדיר תוך שעה.
  • עדכונים קלים: עדכן את MODX פעם אחת.

ראה בעצמך: צור קשר לייעוץ. המהנדסים שלנו עם ניסיון של 5+ שנים יכולים להעריך את הפרויקט שלך. קבל הערכה מדויקת ותוכנית יישום.

אילו טעויות נפוצות קורות בהגדרת Contexts?

אפילו מפתחים מנוסים עושים כמה טעויות. הנפוצה ביותר היא קישור שגוי של משאב השורש en. אם המשאב לא שייך ל-context, MODX לא יכול להציג את האתר. הבעיה השנייה היא תוסף מעבר חסר: בלעדיו, כל הדומיינים מובילים ל-context אחד. שלישית היא התנגשות מטמון: contexts חולקים את מטמון MODX, כך שהגדרות עשויות לדרוס זו את זו. פתרון: הפרד מטמון לפי context על ידי הפעלת אפשרות $resource = $modx->newObject('modDocument'); $resource->set('pagetitle', 'About Us'); $resource->set('alias', 'about-us'); $resource->set('context_key', 'en'); $resource->set('template', 3); $resource->set('parent', 55); $resource->save(); . רביעית: שכחת להגדיר [[~42? &context= לאתרים רב-לשוניים, מה ששובר את הלוקליזציה. חמישית: שגיאות Nginx—הנחיית ]] שגויה או חוסר $siteUrl = $modx->getOption('site_url'); ב-site_start.

טעות נפוצה סיבה איך להימנע
404 בעמוד הבית site_start לא שייך ל-context ודא קישור משאב השורש
אותו תוכן בכל הדומיינים תוסף המעבר לא עובד ודא שאירוע OnHandleRequest מטופל
בעיות לוקליזציה cultureKey חסר או שגוי הגדר cultureKey לכל context
התנגשויות מטמון מטמון משותף לכל ה-contexts הפעל cache_context בהגדרות

אנחנו לוקחים בחשבון את הניואנסים האלה בעת ביצוע ההתקנה במפתח מלא.

רשימת בדיקה להגדרת Context

  1. צור context והגדר פרמטרים.
  2. קשר משאב שורש (cache_context).
  3. הגדר תוסף מעבר (דומיין/קידומת).
  4. עדכן Nginx (העבר HTTP_HOST).
  5. בדוק קישורים בין contexts.
  6. בדוק מעבר.

מה כלול בהתקנה במפתח מלא

  • בדיקת מבנה האתר הנוכחי.
  • יצירת contexts וקישור דומיינים.
  • פיתוח תוסף מעבר.
  • קונפיגורציית שרת (Nginx/Apache).
  • העברת תוכן ל-contexts חדשים.
  • תיעוד והדרכת מנהלים.
  • שבועיים של תמיכה טכנית.

הזמן התקנת MODX contexts במפתח מלא. צור קשר כדי לדון בפרטי הפרויקט שלך. קבל פתרון מוכן תוך 2–3 ימים עם אחריות לביצועים.