WIZZO CMS (בקוד ובתיעוד הפנימי: CORE50) היא מערכת ניהול תוכן ב-PHP שבנויה סביב ליבה אחת משותפת ואתר דק שיושב מעליה. את הליבה כותבים ומתחזקים במקום אחד, ואותו קוד רץ בכל אתר. כל אתר מחזיק רק את מה שמיוחד לו: הקונטרולרים, התבניות, הפאנלים והנתונים שלו.
הליבה חיה בתיקייה api/core/ בריפו (גרסה נוכחית ב-api/core/version.txt) ונפרסת לאתר אל system/core/. כל נתיב ליבה בתיעוד כתוב יחסית ל-api/core, למשל collections/ROUTER.php. הקבצים של הדפדפן (api/js) נפרסים ל-system/js/.
למי זה מיועד#
- מפתחי PHP שבונים אתר על הפלטפורמה: מוסיפים קונטרולר, תבנית, פאנל ניהול וטבלאות, ולא נוגעים בליבה.
- מפתחים שמתחזקים את הליבה עצמה: עובדים ב-
api/core, מפרסמים גרסה, והאתרים מושכים אותה. - מי שמנהל אתר קיים: עובד בפאנל הניהול (
/{admin}, כש-{admin}הואCONFIG::$admin_url) ומקבל כלים מוכנים כמו SEO, מדיה ומשימות מתוזמנות.
התיעוד הזה כתוב לשתי הקבוצות הראשונות. הוא מניח ידע ב-PHP, ב-SQL ובסיסי ב-Vue (לפאנלים מודרניים).
מה יש בליבה#
הטבלה מחברת כל יכולת לקבצים שמממשים אותה, כדי שתדעו איפה לחפש.
| יכולת | איפה בקוד | עמוד |
|---|---|---|
| ניתוב כתובות והפניות 301 | collections/ROUTER.php, טבלאות CRM_seoUrl ו-CRM_redirections | ניתוב, כתובות ידידותיות |
| קונטרולרים ותצוגות Smarty 5 | collections/MODULE.php, collections/FILES.php, addons/Smarty | קונטרולרים, תבניות Smarty |
| ערכות נושא, נכסים ו-SCSS | collections/PAGE.php, collections/theme.php, controllers/minify.php | ערכות נושא, צינור הנכסים |
| שכבת מסד נתונים | collections/DB.php | שכבת ה-DB |
| מטמון נתונים ומטמון עמודים מלא | collections/cache_engine.php | איך המטמון עובד |
| פלטפורמות ורב-לשוניות | CRM_platforms, collections/LANGS.php, collections/PARAMS.php | פלטפורמות ורב-לשוניות |
| פאנל ניהול | collections/ADMIN.php, libraries/AdminModule.php, admin/*.php, themes/admin_panel | סקירת פאנל הניהול |
| טבלאות וטפסים בפאנלים | libraries/panel_table.php, libraries/forms/ | panel_table, Form |
| מדיה והעלאות | collections/STORAGE.php, admin/storage.php, admin/file_manager.php | STORAGE |
| משימות מתוזמנות | controllers/cron_runner.php, admin/cron_manager.php, collections/CronLogger.php | Cron |
| דואר | libraries/mail_tpl.php, MISC::email | שליחת דואר |
| AI ו-MCP | controllers/mcp.php, controllers/agent_mcp.php, controllers/ai_agent_runner.php | MCP, סוכני AI |
| חבילת SEO | libraries/Seo*.php, controllers/seo_*.php, admin/seo_center.php | חבילת ה-SEO |
| שירותי Wizzo Market | libraries/market_service.php, admin/wizzo_market.php | Wizzo Market |
| עדכון ליבה עצמי | admin/wizzo_update.php, controllers/check_version.php | עדכון ליבה |
ארכיטקטורה בקצרה#
כל בקשה נכנסת ל-index.php בשורש האתר. הוא טוען את system/config.php (המחלקה CONFIG_USER) ואז את system/core/core.php. מכאן:
core.phpטוען את כל הקבצים ב-collections/.CONFIGמזהה את הפלטפורמה לפי הדומיין, מתוךCRM_platforms.PAGE::load()מפענח את הכתובת דרךROUTER, מוצא קונטרולר ב-application/controllers/(או קונטרולר מערכת ב-controllers/של הליבה), מריץ אותו ועוטף את הפלט בערכת הנושא.- הפלט עובר למטמון העמודים (אם הוא דלוק) ומודפס.
הסיפור המלא מופיע במחזור חיי בקשה ובסקירת ארכיטקטורה.
מושגי יסוד#
כמה מילים שתפגשו כמעט בכל עמוד בתיעוד:
| מושג | משמעות |
|---|---|
| פלטפורמה (platform) | שורה ב-CRM_platforms: דומיין, שפה, כיוון וערכת נושא ברירת מחדל. ה-id שלה הוא גם מזהה השפה (CONFIG::$lang). אתר אחד יכול להחזיק כמה פלטפורמות, ראו פלטפורמות ורב-לשוניות |
| מודול (module) | קונטרולר של האתר, קובץ ב-application/controllers/ ושורה מופעלת ב-CRM_modules. בלי השורה הכתובת מחזירה 404 |
| קונטרולר מערכת | קובץ ב-controllers/ של הליבה, זמין בכתובת /system/<name> ולא דורש שורה ב-CRM_modules. ראו קונטרולרי מערכת |
| פאנל | עמוד בניהול: מחלקה ADMINMODULE_<שם> בקובץ admin/<שם>.php (בליבה) או application/admin/<שם>.php (באתר), ושורה ב-CRM_adminPanel_panels |
| פרמטר | זוג מפתח וערך ב-CRM_params, נקרא ב-PARAMS::get($key) |
מחלקה סטטית שאתם צריכים (DB, PAGE, MISC, PARAMS ועוד) נמצאת ב-collections/, ו-core.php טוען את כולם בתחילת כל בקשה, כך שאין צורך ב-require. ההסבר המלא בעמוד ה-Collections.
מה שייך לליבה ומה שייך לאתר#
שייך לליבה (system/core, אל תערכו באתר) | שייך לאתר (אתם עורכים) |
|---|---|
collections/: DB, ROUTER, PAGE, ADMIN, STORAGE, cache_engine ועוד | application/controllers/: דפים של האתר |
controllers/: קונטרולרי מערכת, בכתובת /system/<name> | application/models/ ו-application/includes/ |
admin/: הפאנלים המובנים | application/admin/: פאנלים משלכם (ADMINMODULE_<שם>) |
themes/admin_panel ו-themes/admin_login: עיצוב הניהול | themes/<name>/: עיצוב האתר |
addons/, vendor/, libraries/ | system/config.php (המחלקה CONFIG_USER) |
| קוד שמתעדכן אוטומטית עם כל גרסה | שורות במסד: CRM_platforms, CRM_modules, CRM_seoUrl ועוד |
system/core באתר
עדכון ליבה מחליף את התיקייה כולה (הישנה נשמרת כ-system/core_bup_<תאריך>). כל שינוי שעשיתם בתוכה בשרת ייעלם בעדכון הבא. הרחבות הולכות ל-application/, ובאג בליבה מתוקן בריפו ומתפרסם כגרסה חדשה.המבנה המלא של תיקיות האתר מופיע במבנה התיקיות של אתר, ורשימת מפתחות ההגדרה בקונפיגורציה.
איך עדכונים מגיעים לאתרים#
הליבה מקבלת מספר גרסה ב-api/core/version.txt. אתרים לא מושכים קוד מ-git: הם מבקשים גרסה משרת master של Wizzo.
- פאנל
wizzo_update("עדכון גרסה") באתר שואל את ה-master (הכתובת בקבועMASTERב-admin/wizzo_update.php) אם יש גרסה חדשה יותר. בצד ה-master זה מטופל ב-controllers/check_version.php, שמחזיר את מספר הגרסה, ובבקשהformat=jsonגם את הערוץ (latestאוstable) ואת רצפת ה-PHP. - בלחיצה על עדכון הפאנל מוריד ZIP של הליבה, מאמת sha256, בודק דרישות מוקדמות (גרסת PHP,
ZipArchive, מקום פנוי בדיסק, חיבור למסד), מפרס לתיקייה זמנית ומחליף אתsystem/coreבשתי פעולותrename. - האתר קורא ל-
/system/core_pingעל עצמו. תשובת שגיאה או גרסה שאינה תואמת מחזירות את הליבה הישנה. - אחר כך הפאנל משלים מה שהגרסה החדשה מביאה איתה: טבלאות ועמודות חסרות, פאנלים חדשים ברשימת הפאנלים, משימות Cron של המערכת וקבצי ה-JS.
הוא לא יוצר את האתר: צריך שכבר יהיו index.php, system/config.php וחיבור למסד, והפאנל עצמו צריך להיות רשום ב-CRM_adminPanel_panels. את זה עושים בהתקנת אתר חדש. פרטי המנגנון, ערוצי הגרסאות וחזרה אחורה: עדכון ליבה וגרסאות.
מה הלאה#
| אם אתם רוצים | המשיכו ל |
|---|---|
| לוודא שהשרת מתאים | דרישות מערכת |
| להקים אתר חדש מאפס | התקנת אתר חדש |
| לראות מה יש בתיקיות האתר | מבנה התיקיות של אתר |
| לכתוב את הדף הראשון | העמוד הראשון שלך |
| להבין מושגים כמו platform ו-module | מילון מונחים |
| להבין איך בקשה נפתרת | מחזור חיי בקשה |