WIZZO CMS · ליבה 5.0.115 · PHP 8.3 · MySQL

ה-CMS שמתכנתים יכולים לעבוד איתו.

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

RTL ועברית מהיסוד שרת MCP בכל אתר עדכוני ליבה עם חזרה אחורה 108 דפי תיעוד
<?php
// /news  →  index()      /news/item/12  →  item()  with  $_GET["id"] = 12
class news extends wz_controller
{
    function index()
    {
        $items = DB::query("news", ["active" => "1"], "created DESC", "", 20)->get_all();
        return $this->view("news/list", ["items" => $items]);
    }

    function item()
    {
        $row = DB::get_val("news", (int)$_GET["id"]);
        if (!$row) return "ERRORPAGE";          // → the site's 404 page

        SEO::set_var("title", $row["title"]);   // <title> + og:title
        PAGE::$cache_this_page = true;          // full-page cache (gzip)
        return $this->view("news/item", ["row" => $row]);
    }
}

קוד אמיתי מתוך התיעוד. אותו דפוס בדיוק משמש את הפאנלים המובנים של הליבה.

5.0.115גרסת הליבה הנוכחית
23Collections (שכבת הליבה)
50+פאנלי ניהול מובנים
60+סוגי שדות בטפסים
108דפי תיעוד למפתחים
למה WIZZO CMS

תשתית שנבנתה בשטח, לא בחדר ישיבות.

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

עברית ו-RTL הם ברירת המחדל

כיוון הטקסט מגיע מטבלת הפלטפורמות, הפאנל כולו RTL, שדות, תאריכים ועורך התוכן מתנהגים נכון בעברית. אין "תמיכה ב-RTL", יש RTL.

פאנל ניהול שכותבים ב-PHP

רשימה היא אובייקט panel_table, טופס הוא Form עם שדות FormInput_*. כל פאנל הוא קובץ PHP אחד שגם AI יכול לקרוא ולהפעיל דרך MCP, בלי כפילות API.

AI כחלק מהליבה

כל אתר מגיע עם שרת MCP, טוקנים לכל מנהל, סוכנים עם אישורים וזיכרון, וצ'אט בתוך הפאנל. ההרשאות של המנהל הן ההרשאות של ה-AI, לא פחות ולא יותר.

יכולות

מה מקבלים בליבה, בלי להתקין כלום.

collections/ROUTER.php

ניתוב וכתובות ידידותיות

כתובות רגילות ו-Regex מטבלת seoUrl, הפניות 301, קונטרולרי מערכת, שמירת פרמטרי קמפיין ו-503 חכם כשה-DB נופל במקום 404 שמוחק אתכם מגוגל.

איך הניתוב עובד ←
libraries/forms/

מנוע טפסים

עשרות סוגי שדות: טקסט, עורך תוכן, תמונות וגלריות, תאריכים, Select מה-DB, תגיות, JSON, Cron, SEO. ולידציה בשרת ובדפדפן, רב-לשוניות ושמירה אוטומטית לטבלה.

לכתוב טופס ←
libraries/panel_table.php

טבלאות רשימה

רשימה ממוינת עם חיפוש, עריכה בתוך הטבלה, פעולות קבוצתיות, סדר ידני בגרירה, ייצוא Excel וייבוא עם AI. Vue 3 מתחת למכסה, PHP אחד למעלה.

להגדיר רשימה ←
collections/cache_engine.php

מטמון עמודים מלא

העמוד נשמר כ-gzip ומוגש עוד לפני ש-PHP מתעורר, עם נעילת בנייה נגד הצפות, ניקוי פרמטרי מעקב, ופינוי אוטומטי של קבצים שפג תוקפם.

כללי המטמון ←
collections/STORAGE.php

מדיה ואחסון

העלאות עם בדיקת תוכן, תמונות ממוזערות לפי בקשה, חיתוך ועריכה בדפדפן, S3 או FTP מרוחק, ניקוי Cloudflare והמרה ל-WebP.

STORAGE API ←
admin/cron_manager.php

Cron, דואר ורקע

מנהל משימות עם לוגים לכל ריצה, קטגוריות כ-kill switch, תור דואר עם תבניות, ובדיקות בריאות של השרת ישר מהפאנל.

לרשום משימה ←
libraries/Seo*.php

SEO מובנה (SEOK)

ממצאים לפי עמוד, זיהוי קניבליזציה, IndexNow, אימות מול Search Console, GEO, ותגיות ו-Schema מתוך ה-API של העמוד.

חבילת ה-SEO ←
controllers/check_version.php

עדכוני ליבה בטוחים

בדיקה לפני ההחלפה (PHP, דיסק, DB, חתימת sha256), בדיקה אחרי עם core_ping וחזרה אחורה אוטומטית. ערוצי stable ו-dev.

פרוטוקול העדכון ←
ארכיטקטורה

ליבה אחת, אתר אחד מעליה. בלי קסמים.

הליבה (system/) לעולם לא נערכת באתר. האתר מוסיף קוד בתיקיית application/ ובערכת הנושא, והליבה טוענת אותו לפי מוסכמות ברורות. כך עדכון ליבה הוא החלפת תיקייה אחת.

  1. core.phpטוען את כל ה-Collections (מחלקות סטטיות), מריץ CONFIG::preinit() ובודק אם זו ריצת CLI/Cron.
  2. CONFIG::init()מזהה את הפלטפורמה לפי הדומיין מטבלת CRM_platforms וקובע שפה, כיוון ו-URL בסיס.
  3. application/includes/init.phpהקוד שלכם: הגדרות אתר, hooks, טעינת ספריות. רץ לפני כל בקשה.
  4. cache_engine + init_securityאם יש עמוד במטמון הוא מוגש כאן ונגמר. אחרת סינון פרמטרים חשודים וקבצים.
  5. ROUTER::parse_friendly_url()כתובת ידידותית → module, pname, id. אדמין, קונטרולרי מערכת, נכסים סטטיים ו-Regex.
  6. MODULE::get_html()טוען את application/controllers/{module}.php, קורא למתודה, עוטף ב-wrapper().
  7. Theme + PAGE::output()ערכת הנושא מרכיבה את ה-HTML, נכסים, תגיות SEO וסקריפטים. MASK, מטמון, ואז echo.

הכל מתועד צעד-צעד, כולל מה לעשות כשמשהו לא נמצא: מחזור חיי בקשה, 404 ו-503, דיבוג ניתוב עם ?__router_trace=1.

my-site.co.il/
├── index.php                 # require system/core.php
├── .htaccess                 # rewrite + page cache
├── application/
│   ├── includes/init.php     # site bootstrap, hooks
│   ├── admin/includes/mcp_tools.php  # site MCP tools
│   ├── controllers/          # /news → news.php
│   ├── views/                # Smarty .tpl
│   ├── admin/                # ADMINMODULE_News …
│   └── models/
├── themes/
│   └── default/
│       ├── index.php         # TEMPLATE_default
│       └── index.tpl         # {$content}
├── system/                   # = the core. never edit
│   ├── core.php
│   ├── collections/  controllers/  libraries/
│   ├── admin/        assets/       themes/
│   └── market_settings.json
├── storage/                  # uploads
└── cache/                    # per-platform file cache

מבנה האתר המלא, מה חובה ומה אופציונלי, בדף מבנה התיקיות של אתר.

AI ו-MCP

ה-AI נכנס מאותה דלת כמו המנהל.

כל אתר WIZZO CMS חושף נקודת קצה MCP ב-/system/mcp. לקוח MCP (Claude, Cursor, או הסוכנים של WIZZO) מזדהה עם טוקן של מנהל, וכל קריאה לכלי רצה דרך אותם פאנלים, טפסים והרשאות שהמנהל היה עובר בלחיצה.

  • טוקן של מנהל, הרשאות של המנהלטוקן אנושי מונפק דרך מוצר ה-MCP ב-Wizzo Market ונשמר בטבלת CRM_adminPanel_mcp_tokens עם תפוגה, רשימת כלים מותרים ו"שימוש אחרון". סוכנים מקבלים טוקני ריצה קצרי-חיים. קבוצת ההרשאות של המנהל היא הגבול של ה-AI.
  • הפאנלים שלכם הם כליםכל panel_table ו-Form חושפים סכמת JSON. הכלים הכלליים (panel_schema, list_rows, save_record, set_field, form_action) עובדים על כל פאנל שתכתבו, בלי שורת קוד נוספת.
  • סוכנים עם אישורים וזיכרוןסוכן רץ לפי לוח זמנים או אירוע, מבקש אישור לפני כתיבה (approve_writes), זוכר מה למד, ונעצר ב-kill switch אחד. כל ריצה מתועדת צעד-צעד.
  • כלים ייעודיים לאתררישום אחד ב-application/admin/includes/mcp_tools.php דרך AGENT_TOOLS::add_tool() הופך פונקציית PHP לכלי MCP עם סכמה, תיאור והרשאה. כך סוכן יכול "לסגור הזמנה" או "לפרסם מהדורה" בשפה של העסק שלכם.
.mcp.json · Claude Desktop / Cursor
{
  "mcpServers": {
    "my-site": {
      "type": "http",
      "url": "https://my-site.co.il/system/mcp",
      "headers": { "Authorization": "Bearer wz_…" }
    }
  }
}
list_panelspanel_schemalist_rowssave_recordset_fieldform_actiondelete_recordimport_mediasearch_medianotify_adminrememberrecall

הקטלוג המלא, סכמות הקלט ומודל ההרשאות: קטלוג כלי ה-MCP · כתיבת כלי לאתר · סוכני AI.

Wizzo Market

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

ה-Market מפעיל שירות, מוסר מפתח API, והליבה פותחת את הפאנל של המוצר בתפריט הניהול עם ההרשאות הרגילות. למפתח זה JSON אחד (system/market_settings.json) ו-API של market_service.

WizzoAIצ'אט בתוך הפאנל, AI בשדות הטופס, סוכנים ו-MCP.market_service::is_active("wizzoai")
SEOKחבילת ה-SEO: ממצאים, קניבליזציה, IndexNow, GEO.libraries/Seo*.php
KAMAניטור בזמן אמת של עמודים ישירות מתוך הרשימות.radar_tracking
WizzoNowנוכחות מנהלים, צ'אט צוות ועריכה משותפת.realtime_tracking
WizzoStreamוידאו של האתר בתוך מסך הניהול, עם שדה טופס ייעודי.FormInput_WizzoStream
Pooshהודעות Push עם Service Worker שמוגש מהאתר./poosh-sw.js
Poolseסקרים ופולים עם מדיה מנוהלת מהפאנל.poolse_client
Pilotוידג'ט צ'אט ללקוחות, מוגש first-party./pjs.js
NEWPAGEדפי נחיתה ב-/p/{slug} עטופים בתבנית האתר.newpage_public
TARGETניהול פרסום ו-SDK בשם ניטרלי./tjs.js
התקן

סטנדרט אחד לליבה ולכל אתר שנבנה עליה.

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

01 · קוד

כללי כתיבה ושמות

איך קוראים לקונטרולר, לפאנל, לטבלה ולמתודה. מה אסור (SQL מחובר במחרוזות, HTML בלי escape, גישה ישירה ל-system/) ומה חובה.

  • PHP 8.3, טיפוסים בקוד חדש
  • קידומת CRM_ דרך CONFIG::$db_fullprefix בלבד
  • Escape של כל פלט, ולידציה של כל קלט
02 · תיעוד

תיעוד שחי עם הקוד

כל יכולת ציבורית מתועדת כאן. שינוי התנהגות בליבה מגיע עם עדכון הדף הרלוונטי באותו PR, ועם הערת "שימו לב" כשיש התנהגות מפתיעה.

  • 108 דפים, רפרנס לכל Collection
  • דוגמאות קוד שנבדקו מול הליבה
  • היסטוריית גרסאות מלאה
03 · תהליך

גרסאות, PR ואבטחה

מספר גרסה אחד (version.txt), הודעת commit במבנה קבוע עם מספר טיקט, Changelog, ובדיקות אוטומטיות לפני מיזוג. סודות אף פעם לא בריפו.

  • ערוצי stable ו-dev לעדכוני ליבה
  • צ'קליסט הקשחה לפני עלייה לאוויר
  • רשימת מארחים חיצוניים שקופה