הגדרת miniShop2 לחנות מסחר אלקטרוני מבוססת MODX
לקוח הביא קטלוג של 3,000 מוצרים מ-1C-Bitrix — נדרשנו לבצע מיגרציה ל-MODX Revolution תוך שבועיים. מבנה הקטגוריות היה שונה, והמחירים עם האפשרויות היו מקושרים ל-SKU. miniShop2, רכיב המסחר האלקטרוני מצוות Bezumkin, מתמודד עם משימות כאלה אם מכירים את ניואנסים של ההתקנה. הוא משתלב בצורה חלקה בארכיטקטורת MODX: מוצרים הופכים למשאבים עם שדות נוספים, הסל וההזמנות הם טבלאות נפרדות. כתוצאה מכך, הקטלוג מנוהל דרך מנהל ה-MODX המוכר, לא דרך פאנל נפרד. השתמשנו ב-miniShop2 ביותר מ-50 פרויקטים, והוא הוכיח את עצמו כאמין בעומסים של עד 10,000 מוצרים. עם אופטימיזציה נכונה, עלויות התחזוקה מופחתות פי 2–3 — טיעון חשוב בבחירת פלטפורמת מסחר אלקטרוני. עלויות האחסון יורדות בכ-30%, וחוסכות כ-1,800 דולר בשנה.
האתגרים העיקריים במהלך המיגרציה הם שאילתות N+1, הגדרת אפשרויות עם תוספות מחיר, ושילוב שערי תשלום. כדי להאיץ את הסינון, אנו משתמשים ב-mSearch2 ובאינדקסים של MySQL. pdoTools מפחית את מספר השאילתות פי 2–3. לפי התיעוד הרשמי: תיעוד MODX על pdoTools.
מה אנחנו פותרים
- שאילתות N+1 בעת הצגת הקטלוג — pdoTools מייעל את השאילתה דרך טעינה עצלה של ORM, ואנו מגדירים מטמון דרך Redis. זה מספק עליית מהירות פי 3 בהשוואה לשאילתות רגילות.
- אפשרויות מורכבות עם תוספות מחיר — msOptionsPrice2 מאפשר להגדיר מחיר לכל שילוב, SKU נפרד, ומלאי.
- שילוב עם משלוח ותשלום — אנו מחברים CDEK, Boxberry, דואר רוסי, ושערי תשלום.
- ביצועי סל תחת עומס גבוה — אנו משתמשים בבקשות AJAX למעבדים, ושומרים את המצב בסשן.
איך אנחנו עושים את זה
טכנולוגיות: MODX Revolution 3.x, PHP 8.2, MySQL 8, Redis, Nginx. אופטימיזציות:
- ה-snippet msProducts נקרא תמיד ללא מטמון (!) לנתונים דינמיים.
- לאפשרויות, אנו משתמשים ב-msOptionsPrice2 עם סוג בחירה — הערכים מאוחסנים בטבלה נפרדת.
- סינון דרך mFilter2 מוגדר עם אינדקסים על מחיר ומלאי.
- משאבים נשמרים במטמון דרך Redis עם תיוג לפסילה מהירה.
מקרה בוחן: לאחרונה פרסנו חנות עם 5,000 מוצרים ו-30 אפשרויות. הסינון עבד ב-200 אלפיות השנייה, והסל ב-AJAX ללא טעינת עמוד מחדש. הבעיה היחידה הייתה הייבוא — כתבנו סקריפט שטען 100 מוצרים בכל עסקה, והאיץ את התהליך פי 3. זה חסך ללקוח שבוע של פיתוח והפחית את עלות המיגרציה הכוללת ב-2,000 דולר.
איך להגדיר סינון וחיפוש לקטלוג גדול?
אנו משתמשים ב-mSearch2 עם סינון פנים (facet). ה-snippet mFilter2 עם אלמנטים של msProducts וסינון לפי מחיר ואפשרויות. הסינון מתבצע דרך AJAX. כדי להאיץ, אנו מוסיפים אינדקסים ב-MySQL:
ALTER TABLE modx_ms2_products ADD INDEX idx_price (price); ALTER TABLE modx_ms2_products ADD INDEX idx_count (count); זה מפחית את זמן הביצוע של שאילתות הסינון ב-50–70%.
למה miniShop2 יעיל יותר מפתרונות קופסה מוכנים?
בניגוד למהדורות Bitrix, miniShop2 אינו מעמיס על המערכת מודולים מיותרים. אתה מקבל רק את הפונקציונליות הדרושה, ובונה את כל השאר לפי הצרכים שלך. עלות הבעלות נמוכה פי 2–3 בשל היעדר רישיונות שנתיים והיכולת לשנות את הקוד בעצמך. החיסכון הופך בולט במיוחד בהרחבה — ללא נעילת ספק (vendor lock-in).
ייבוא ומיגרציה
אין ייבוא המוני מובנה, ולכן אנו משתמשים בסקריפט שיוצר מוצרים ישירות דרך ה-API של MODX. עבור 3,000 מוצרים מ-CSV, אנו מחלקים לקבוצות של 100 ומריצים ברקע.
יישום PHP לייבוא בקבוצות
foreach (array_chunk($rows, 100) as $batch) {
foreach ($batch as $row) {
$resource = $modx->newObject('msProduct');
$resource->fromArray([
'pagetitle' => $row[0],
'parent' => $categoryId,
'class_key' => 'msProduct',
]);
$resource->save();
$product = $modx->getObject('msProductData', $resource->id);
$product->set('price', (float) $row[2]);
$product->save();
}
$modx->cacheManager->clearCache();
}למיגרציה מ-1C, אנו מכינים סקריפט שקורא CommerceML, ממפה קטגוריות, וטוען מוצרים עם אפשרויות.
תהליך העבודה
- ניתוח — אנו לומדים את הקטלוג הנוכחי, המבנה, והאינטגרציות.
- עיצוב — סכמת קטגוריות, סוגי אפשרויות, שיטות משלוח ותשלום.
- יישום — התקנה, הגדרה, עיצוב, אינטגרציה.
- בדיקות — בדיקת הסל, ההזמנות, הביצועים.
- השקה — הגדרת ניתוב URL, SEO, מיקרודאטה של schema.org.
התוצרים כוללים: תיעוד פרויקט, גישת מנהל, הדרכה לעורכים, וחודש של תמיכה לאחר ההשקה.
לוחות זמנים ומה כלול
| שלב | משך (ימים) |
|---|---|
| התקנה והגדרה בסיסית | 1 |
| תבניות קטלוג וסל | 3–5 |
| שילוב משלוח ותשלום | 1–2 |
| ייבוא מוצרים מ-CSV/CommerceML | 1–2 |
| סינון mSearch2 | 2–3 |
| SEO + מיקרודאטה | 1 |
קיים גם שלב נוסף — יצירת רשימת בדיקה מפורטת לעורכים (יום אחד).
| פרמטר | ייבוא CSV | CommerceML |
|---|---|---|
| מורכבות | נמוכה | בינונית |
| מהירות | 1,000 מוצרים/דקה | 500 מוצרים/דקה |
| דיוק | דורש ניקוי מוקדם | גבוה, שומר על קשרים |
צרו קשר — אנו נעריך את הפרויקט שלכם ונציע פתרון. קבלו ייעוץ ממהנדס עם 7 שנות ניסיון ב-MODX. אנו מבטיחים חנות פונקציונלית מלאה בתוך לוח הזמנים המוסכם.







