🧭 نظرة عامة عن المشروع
klshey هو نظام إعلانات مبوبة (Classifieds/Marketplace) مبني على إطار العمل Phalcon PHP (الإصدار 8.0.4).
النظام يشبه موقع "أوليكس" أو "حراج" — يمكن للمستخدمين نشر إعلانات، إنشاء متاجر، مشاريع، والعديد من الميزات الأخرى.
النظام يستخدم قواعد بيانات MySQL، ومحرك القوالب Volt، ويدعم عدة لغات.
🗂️ هيكل المجلدات والملفات
C:\MAMP\htdocs\klshey\
│
├── __MACOSX/
│
└── klshey/
│
├── .htaccess
├── .gitignore
├── version.ini
├── helper.php
├── index.html
├── index.html.bak
│
├── apps/
│ ├── backend/
│ ├── frontend/
│ ├── config/
│ ├── library/
│ ├── models/
│ ├── cache/
│ ├── certs/
│ └── install.sql
│
├── public/
│ ├── .htaccess
│ ├── .user.ini
│ ├── index.php
│ ├── favicon.ico
│ ├── robots.txt
│ ├── awy.license
│ ├── assets/
│ │ ├── AWY-V8/
│ │ ├── Panel/
│ │ └── Wizard/
│ ├── images/
│ └── models/
│
├── public_html/
├── html/
├── *.sql / *.sql.zip
└── klshey29-9.zip
📂 تحليل كل مجلد بالتفصيل
1️⃣ apps/config/ — الإعدادات الأساسية
| الملف | ماذا يحوي | بماذا يرتبط |
config.php |
إعدادات التطبيق: مسار لوحة التحكم (Panel)، حالة التثبيت، وضع التصحيح |
يُستدعى من public/index.php |
database.php |
إعدادات اتصال MySQL — يدعم متغيرات البيئة |
يُستدعى من public/index.php عبر $di->set('db') |
panel.php |
قائمة menu لوحة التحكم (277 سطر) |
يُستدعى من apps/backend/Module.php |
asset_versions.php |
أرقام إصدارات مكتبات CDN (Bootstrap, jQuery, FontAwesome...) |
يُستدعى من public/index.php ويُمرر إلى index.volt |
site_id.php |
رقم الموقع: 1 |
يُقرأ في public/index.php |
store_url.php |
قيمة: Magaza — اسم رابط المتاجر |
يُستخدم في التوجيه (Routing) |
super_admins.php |
قائمة معرفات المشرفين المتميزين: [1] |
يُستخدم في التحقق من صلاحيات المشرف |
awy_stubs.php |
محاكي لمكتبة AydinWeb المشفرة — يسمح بعمل المشروع محلياً |
يُستدعى من public/index.php |
phalcon5_compat.php |
طبقة توافقية مع Phalcon 5 (كلاسات بديلة) |
يُستدعى من public/index.php |
translate_helper.php |
دالة مساعدة للترجمة awy_make_translator() |
يُستدعى من public/index.php |
crons.php |
إعدادات المهام المجدولة (Cron Jobs) |
يُستخدم من CronController |
localhost_bypass.php |
تجاوز بعض القيود في البيئة المحلية |
يُستدعى عند الحاجة |
2️⃣ apps/backend/ — وحدة لوحة التحكم
Module.php
الوظيفة: تعريف الوحدة الخلفية — تسجيل مساحات الأسماء، إعداد الموزع (Dispatcher)، تمرير المتغيرات للعرض
يرتبط بـ: apps/config/panel.php ← لتحميل قائمة المنيو | controllers/AWY.php ← للحصول على روابط الموقع | يُسجل في public/index.php
المتحكمات (78 ملفًا)
| المتحكم | الوظيفة | المسار في الموقع |
ControllerBase.php | القاعدة الأساسية — التحقق من تسجيل الدخول، الصلاحيات، الترجمات | جميع المتحكمات ترث منه |
AWY.php | كلاس المساعد الرئيسي — Traits (LocalhostAwyStub, Extra, Queries) | يُحقن في Module.php |
IndexController.php | الصفحة الرئيسية للوحة التحكم + 404 و 500 | /Panel |
GirisController.php | تسجيل دخول المشرفين | Panel/Giris |
TumIlanlarController.php | إدارة كل الإعلانات | Panel/Tum-Ilanlar |
TumUyelerController.php | إدارة الأعضاء | Panel/Tum-Uyeler |
TumKategorilerController.php | إدارة التصنيفات | Panel/Tum-Kategoriler |
TumMagazalarController.php | إدارة المتاجر | Panel/Tum-Magazalar |
SiteAyarlariController.php | إعدادات الموقع العامة | Panel/Site-Ayarlari |
KategoriController.php | إدارة التصنيفات | Panel/Kategori |
TumSayfalarController.php | إدارة الصفحات الثابتة | Panel/Tum-Sayfalar |
TumProjelerController.php | إدارة المشاريع | Panel/Tum-Projeler |
TumReklamlarController.php | إدارة الإعلانات المدفوعة | Panel/Tum-Reklamlar |
TumOdemelerController.php | إدارة المدفوعات | Panel/Tum-Odemeler |
TumDillerController.php | إدارة اللغات | Panel/Tum-Diller |
TumYoneticilerController.php | إدارة المشرفين | Panel/Tum-Yoneticiler |
TumAnketlerController.php | إدارة استبيانات الرأي | Panel/Tum-Anketler |
TumHaberlerController.php | إدارة الأخبار | Panel/Tum-Haberler |
TumMakalelerController.php | إدارة المقالات | Panel/Tum-Makaleler |
TumSlaytlarController.php | إدارة الشرائح الدوارة | Panel/Tum-Slaytlar |
RenkAyarlariController.php | إعدادات الألوان والثيم | Panel/Renk-Ayarlari |
BankaHesaplariController.php | إدارة الحسابات البنكية | Panel/Banka-Hesaplari |
OdemeYontemleriController.php | إدارة طرق الدفع | Panel/Odeme-Yontemleri |
IlanAyarlariController.php | إعدادات الإعلانات | Panel/Ilan-Ayarlari |
Pager.php | كلاس مساعد للترقيم (Pagination) | يُستخدم من المتحكمات |
Security.php | كلاس المساعدة الأمنية — تشفير، CSRF | يُستخدم من المتحكمات |
Email.php | كلاس إرسال البريد الإلكتروني | يُحقن في Module.php |
Sms.php | كلاس إرسال الرسائل النصية | يُستخدم عند الحاجة |
Warning.php | كلاس التحذيرات والرسائل | يُحقن في Module.php |
بالإضافة إلى 28 متحكمًا آخر: AcilIlanlarController، FiyatiDusenIlanlarController، GununFirsatlariController، SilinenIlanlarController، SuresiBitenIlanlarController، SuresiBitenMagazalarController، SuresiBitenReklamlarController، OnayBekleyenYorumlarController، OnayBekleyenYorumCevaplariController، BolgeController، FotografController، KategoriGuncelleyiciController، GetIlanlariController، IlanlariDisaAktarController، IlanlariIceAktarController، IstatistiklerController، OdenmeyenOdemelerController، OnbellekTemizleController، PaypalSertifikaOlusturController، PuanAyarlariController، SiteHaritasiOlusturController، StilCssDerleController، TaksitYapilandirmasiController، UyelereEMailGonderController، UyelereSmsGonderController، AramaOnerileriController، GuncellemeKontrolController
قوالب العرض — views/ (68 مجلدًا)
| المجلد | الوظيفة |
index.volt | القالب الرئيسي للوحة التحكم — 456 سطرًا، يحمل كل CSS/JS |
index/ | الصفحة الرئيسية، 404، 500، صفحة ممنوع |
Giris/ | صفحات دخول المشرفين |
Tum-Ilanlar/ | إدارة الإعلانات |
Tum-Uyeler/ | إدارة الأعضاء |
| باقي المجلدات — لكل Controller مجلد views مطابق باسمه بالتركية |
ملفات الترجمة — langs/
ar/ اللغة العربية en/ اللغة الإنجليزية tr/ اللغة التركية
3️⃣ apps/frontend/ — وحدة الموقع العام
Module.php
الوظيفة: تعريف الوحدة الأمامية — مثل Backend Module.php لكن بدون متغير $backend
يرتبط بـ: controllers/AWY.php، controllers/Email.php — يُسجل في public/index.php
المتحكمات (64 ملفًا)
| المتحكم | الوظيفة | المسار في الموقع |
ControllerBase.php | القاعدة — ضبط القالب، الصيانة، تتبع الزوار، إعدادات الموقع | جميع المتحكمات ترث منه |
IndexController.php | الصفحة الرئيسية، تغيير اللغة، الاستبيانات | / |
GirisController.php | تسجيل دخول المستخدمين | /Giris |
UyeOlController.php | تسجيل مستخدم جديد | /Uye-Ol |
SifremiUnuttumController.php | استعادة كلمة المرور | /Sifremi-Unuttum |
IlanController.php | صفحة تفاصيل الإعلان | /Ilan/{Slug}-{ID} |
IlanVerController.php | نشر إعلان جديد | /Ilan-Ver |
IlanAraController.php | البحث المتقدم | /Ilan-Ara |
AraController.php | البحث السريع | /Ara |
KategoriController.php | عرض التصنيفات | /Kategori/{Slug}-{ID} |
MagazaController.php | صفحة المتجر | /Magaza/{name} |
MagazaAcController.php | فتح متجر جديد | /Magaza-Ac |
MagazaYonetController.php | إدارة المتجر | /Magaza-Yonet |
MagazaIlanlariController.php | إعلانات المتجر | /Magaza-Ilanlari |
MagazaKullanicilariController.php | مستخدمي المتجر | /Magaza-Kullanicilari |
MagazaYenileController.php | تجديد المتجر | /Magaza-Yenile |
MagazalarController.php | قائمة المتاجر | /Magazalar |
UyeprofilController.php | الملف الشخصي | /Profil/{Uye} |
HesabimController.php | حسابي (الإعدادات، الإعلانات، المفضلة) | /Hesabim |
SepetController.php | سلة المشتريات | /Sepet |
OdemeController.php | صفحة الدفع | /Odeme |
SayfaController.php | الصفحات الثابتة (من نحن، اتصل بنا...) | /Sayfa/{name} |
HaberController.php | صفحة خبر | /Haber/{Slug}-{ID} |
HaberlerController.php | قائمة الأخبار | /Haberler |
BlogController.php | المدونة | /Blog |
MakaleController.php | صفحة مقالة | /Makale/{Slug}-{ID} |
ProjeController.php | صفحة مشروع | /Proje/{Slug}-{ID} |
ProjelerController.php | قائمة المشاريع | /Projeler |
IletisimController.php | اتصل بنا | /Iletisim |
DestekMerkeziController.php | مركز الدعم الفني (تذاكر) | /Destek-Merkezi |
DopingController.php | الترويج للإعلانات | /Doping |
ApiController.php | واجهة API | /Api |
CronController.php | المهام المجدولة | /Cron (CLI) |
KurulumSihirbaziController.php | معالج التثبيت | /Kurulum-Sihirbazi |
RssController.php | تغذية RSS | /Rss |
SatisSozlesmesiController.php | عقد البيع | /Satis-Sozlesmesi |
BakimController.php | صفحة الصيانة | /Bakim |
قوالب العرض — views/AWY-V8/ (54 مجلد/ملف)
| المسار | الوظيفة |
index.volt | ⭐ القالب الرئيسي — 1075 سطرًا، يحتوي على <head> و CSS/JS وجميع مكونات الصفحة |
index/index.volt | محتوى الصفحة الرئيسية |
Ilan/ | تفاصيل الإعلان |
Ilan-Ver/ | نموذج نشر إعلان |
Ilan-Ara/ | البحث المتقدم |
Kategori/ | التصنيفات |
Magaza/ | صفحة المتجر |
Magaza-Ac/ | فتح متجر |
Magaza-Yonet/ | لوحة تحكم المتجر |
Magazalar/ | قائمة المتاجر |
Giris/ | تسجيل الدخول |
Uye-Ol/ | التسجيل |
Hesabim/ | لوحة تحكم المستخدم |
Sepet/ | سلة المشتريات |
Odeme/ | الدفع |
Haber/ | الخبر |
Haberler/ | قائمة الأخبار |
Blog/ | المدونة |
Makale/ | مقالة |
Proje/ | مشروع |
Projeler/ | قائمة المشاريع |
Sayfa/ | الصفحات الثابتة |
Iletisim/ | نموذج الاتصال |
Destek-Merkezi/ | تذاكر الدعم |
partials/ | أجزاء قابلة لإعادة الاستخدام — sidebar.volt، sidebar_store.volt، error.volt |
modules/ | موديولات الصفحة الرئيسية — 13 ملفًا (slider.volt، showcase.volt، ...) |
Input/ | قوالب حقول الإدخال المخصصة — 18 ملفًا |
mail/ | قالب البريد الإلكتروني |
colors.cnf | ملف تعريف الألوان — 42 ثيم لوني |
4️⃣ apps/models/ + public/models/ — موديلات قاعدة البيانات (61 ملفًا)
| الموديل | الجدول | الوظيفة |
Ads.php | ads | الإعلانات — جدول رئيسي |
Users.php | users | المستخدمون (الأعضاء) |
Categories.php | categories | التصنيفات |
Stores.php | stores | المتاجر |
Settings.php | settings | إعدادات الموقع |
Langs.php | langs | اللغات المدعومة |
Pages.php | pages | الصفحات الثابتة |
Slides.php | slides | الشرائح الدوارة |
News.php | news | الأخبار |
Articles.php | articles | المقالات |
Projects.php | projects | المشاريع العقارية |
Orders.php | orders | الطلبات |
Carts.php | carts | سلة المشتريات |
PaymentMethods.php | payment_methods | طرق الدفع |
BankAccounts.php | bank_accounts | الحسابات البنكية |
Managers.php | managers | المشرفون |
Messages.php | messages | الرسائل بين المستخدمين |
Comments.php | comments | التعليقات على الإعلانات |
Tickets.php | tickets | تذاكر الدعم الفني |
Fields.php | fields | الحقول المخصصة |
Currencies.php | currencies | العملات |
Packages.php | packages | باقات الإعلانات |
Visitors.php | visitors | زوار الموقع |
Ulke.php | ulke | الدول |
Il.php | il | المدن |
Ilce.php | ilce | الأقضية |
Semt.php | semt | الأحياء |
Mahalle.php | mahalle | الحارات |
بالإضافة إلى: Adverts، Dopings، FavoriteAds، FavoriteSearches، ShippingCompanies، Installments، Polls، PollsAnswers، HelpContents، AdsShowcase، AdsCatshowcase، AdsUrgent، AdsDeals، AdsDrop، AdTime، StoresShowcase، StoresCatshowcase، StoresAds، StoresUsers، UserAddress، UserBanks، ReportAds، ReportMessages، MailQueue، Stories، Get، Modules، AdFieldValues، MultipleFieldValues، ProjectsTypes، ProjectsFeatures، ProjectsPlans، TicketsReplys
5️⃣ apps/library/ — المكتبات والمساعدات
| المكتبة | الوظيفة |
LocalhostAwyStub.php | ⭐ المحاكي الأساسي لمكتبة AydinWeb — 1074 سطرًا من دوال المنطق التجاري |
LocalhostAwyStubExtra.php | دوال إضافية للمحاكي |
LocalhostAwyStubQueries.php | استعلامات قاعدة البيانات للمحاكي |
AssetLicenser.php | يضيف ترخيصًا لنصوص CSS/JS |
Captcha/ | نظام التحقق البشري (CAPTCHA) |
ColorChanger.php | تغيير ألوان الثيم |
CrontabManager/ | إدارة المهام المجدولة |
Faker/ | توليد بيانات وهمية |
IdnaConvert/ | تحويل أسماء النطاقات الدولية |
MysqlImport/ | استيراد/تصدير قواعد البيانات |
Payments/ | مكتبات الدفع (PayPal, PayTR, Iyzico...) |
PhoneFormats/ | تنسيقات أرقام الهواتف |
PHPMailer/ | مكتبة إرسال البريد الإلكتروني |
PhpSpreadsheet/ | التعامل مع جداول البيانات (Excel) |
SimpleCache/ | نظام التخزين المؤقت |
SitemapGenerator/ | إنشاء خريطة الموقع (Sitemap XML) |
Sms/ | إرسال الرسائل النصية |
Twitter/ | التكامل مع تويتر |
Upload/ | رفع الملفات والصور |
6️⃣ public/ — المجلد العام (Document Root)
index.php — نقطة الدخول (372 سطرًا)
الوظيفة: الملف الذي تستقبله جميع الطلبات. يقوم بـ:
1. ضبط PHP (وقت التنفيذ، الذاكرة، رفع الملفات)
2. التحقق من Phalcon Extension
3. تحميل ملفات التوافق
4. إعداد DI Container (قاعدة بيانات، جلسة، كوكيز، Volt)
5. تحميل الإعدادات من DB
6. إعداد Router (جميع المسارات)
7. تسجيل الوحدات (frontend + backend)
8. معالجة الطلب ← عرض HTML
public/assets/AWY-V8/ — أصول ثيم الموقع العام
| المسار | الوظيفة |
css/style.scss | ⭐ ملف الـ SCSS الرئيسي (16,357 سطرًا) — يُجمّع إلى style.min.css |
css/out/style.min.css | الناتج النهائي — يُحمّل في index.volt |
css/home-v2.css | CSS للصفحة الرئيسية فقط |
css/category-v2.css | CSS لصفحات التصنيفات فقط |
css/ilan-v2.css | CSS لصفحة تفاصيل الإعلان فقط |
css/contract.min.css | CSS لعقد البيع |
css/payment.min.css | CSS لصفحة الدفع |
js/custom.js | جافاسكريبت عام |
js/home-v2.js | جافاسكريبت الصفحة الرئيسية |
js/category-v2.js | جافاسكريبت التصنيفات |
js/ilan-v2.js | جافاسكريبت تفاصيل الإعلان |
js/tinymce/ | محرر النصوص TinyMCE |
fonts/ | خطوط Cairo و LucidaGrande |
froala/ | محرر Froala (بديل) |
error/ | صفحات الأخطاء |
maintenance/ | صفحة الصيانة |
mail/ | قوالب البريد |
public/assets/Panel/ — أصول لوحة التحكم
| المسار | الوظيفة |
css/main.css | CSS كامل للوحة التحكم |
css/main.min.css | نسخة مضغوطة — يُحمّل في index.volt |
js/main.js | جافاسكريبت كامل |
js/main.min.js | نسخة مضغوطة |
js/customizer.js | أداة تخصيص الواجهة |
img/ | 19 صورة (شعارات، أيقونات) |
public/assets/Wizard/ — أصول معالج التثبيت
يحتوي على css/paper-bootstrap-wizard.css، js/، img/ لمعالج التثبيت الأولي.
🔀 نظام التوجيه (Routing)
كيف يعمل التوجيه
1. طلب المستخدم يصل إلى public/.htaccess
2. .htaccess يعيد كتابة المسار ← public/index.php?_url=/path
3. index.php يستخدم Phalcon Router لتحليل _url
4. الـ Router يوزع الطلب إلى المتحكم المناسب
مسارات الموقع العام (Frontend)
| النمط (Pattern) | المتحكم | الوصف |
/ | Index | الصفحة الرئيسية |
/Dil-Degistir/{language} | Index | تغيير اللغة |
/Cookie-Uyari-Kapat | Index | إخفاء تحذير الكوكيز |
/Magaza/{Magaza} | Magaza | صفحة المتجر |
/Profil/{Uye} | UyeProfil | الملف الشخصي |
/Sayfa/{Sayfa} | Sayfa | الصفحات الثابتة |
/Haber/{Slug}-{ID} | Haber | خبر |
/Ilan/{Slug}-{ID} | Ilan | تفاصيل الإعلان |
/Makale/{Slug}-{ID} | Makale | مقالة |
/Kategori/{Slug}-{ID} | Kategori | التصنيفات |
/Proje/{Slug}-{ID} | Proje | المشاريع |
مسارات لوحة التحكم (Backend)
| النمط | الوحدة | المتحكم | الأكشن |
/Panel | backend | Index | index |
/Panel/:controller | backend | :controller | index |
/Panel/:controller/:action | backend | :controller | :action |
/Panel/:controller/:action/:params | backend | :controller | :action |
🎨 الستايل (CSS/SCSS) — الوجهات الأساسية
ملفات CSS/SCSS الرئيسية
| الملف | النوع | أين يُستخدم |
assets/AWY-V8/css/style.scss | SCSS (16,357 سطر) | ⭐ الموقع العام — الستايل الأساسي بالكامل |
assets/AWY-V8/css/out/style.min.css | CSS مضغوط | يُحمّل في index.volt للموقع العام |
assets/AWY-V8/css/home-v2.css | CSS | يُحمّل عند isHome = true |
assets/AWY-V8/css/category-v2.css | CSS | يُحمّل في صفحات التصنيفات |
assets/AWY-V8/css/ilan-v2.css | CSS | يُحمّل في صفحة تفاصيل الإعلان |
assets/AWY-V8/css/contract.min.css | CSS | يُحمّل في صفحة عقد البيع |
assets/AWY-V8/css/payment.min.css | CSS | يُحمّل في صفحة الدفع |
assets/Panel/css/main.css | CSS | لوحة التحكم — يُجمّع إلى main.min.css |
assets/Panel/css/main.min.css | CSS مضغوط | يُحمّل في index.volt للوحة التحكم |
مكتبات CSS الخارجية (CDN)
Font Awesome 6 — الأيقونات | Bootstrap 4.4.1 — تخطيط اللوحة | Fancybox — معرض الصور
OwlCarousel2 — الكاروسيل | Select2 — صناديق اختيار محسّنة
SweetAlert2 — نوافذ التأكيد | DataTables — جداول تفاعلية | Mapbox GL — الخرائط
نظام الألوان (colors.cnf)
الملف يحتوي على 42 ثيم لوني، كل ثيم معرف بـ 5 ألوان:
اسم_الثيم=اللون_الرئيسي|اللون_الداكن|لون_الرابط|لون_الخلفية|لون_النص
مثال: red=#df1f26|#ad0000|#003399|#e7e7e7|#000000
آلية عمل الستايل وارتباطه
style.scss (16,357 سطر)
──→ style.min.css
──→ index.volt
(يُحمّل)
↑
ControllerBase.php
──→ $settings = \Models\Settings::findFirst()
──→ $colors (يُمرر إلى index.volt)
↑
RenkAyarlariController ──→ يُحفظ اللون في DB
↑
المسؤول يختار الثيم من لوحة التحكم
سلسلة الارتباط الكاملة: المسؤول يختار الثيم ← RenkAyarlariController ← يُحفظ في جدول settings في DB ← ControllerBase.php يحمّل الإعدادات ← يُمرّر إلى index.volt كـ $colors ← يُستخدم inline في CSS
🔗 خريطة ارتباط الملفات — من يدعو من؟
🎯 نقطة الدخول (Entry Point)
طلب المستخدم (URL)
│ ▼
public/.htaccess ← يعيد كتابة المسار
│ ▼
public/index.php ← ⭐ نقطة الدخول الوحيدة
│
├── apps/config/awy_stubs.php ← محاكي المكتبة المشفرة
├── apps/config/phalcon5_compat.php ← توافقية Phalcon 5
├── apps/config/config.php ← إعدادات التطبيق
├── apps/config/database.php ← اتصال قاعدة البيانات
├── apps/models/Settings.php ← إعدادات الموقع من DB
│
├── [Router] ← يحدد المتحكم حسب URL
│
├── apps/frontend/Module.php ← للطلبات العامة
│ ├── controllers/AWY.php
│ │ ├── library/LocalhostAwyStub.php
│ │ ├── library/LocalhostAwyStubExtra.php
│ │ └── library/LocalhostAwyStubQueries.php
│ ├── controllers/Email.php
│ └── controllers/Warning.php
│
└── apps/backend/Module.php ← للطلبات التي تبدأ بـ /Panel
├── controllers/AWY.php
├── controllers/Email.php
├── controllers/Warning.php
└── apps/config/panel.php ← قائمة المنيو
🎯 سلسلة استدعاء المتحكم (Controller)
index.php → Router → [Module: frontend|backend] [Controller] [Action]
│ ▼
Module.php (يسجل المساحات)
│ ▼
ControllerBase.php
│ ├── قبل التنفيذ: تحقق من تسجيل الدخول (للباك إند)
│ ├── بعد التنفيذ: تعيين عنوان الصفحة
│ └── أثناء التهيئة: تحميل القالب والترجمات
│ ▼
Controller المطلوب (مثل IndexController)
│ └── Action (مثل indexAction)
│ └── يعرض القالب (View) المناسب
🎯 سلسلة استدعاء القالب (View)
Controller → Action
│ └── apps/frontend/views/AWY-V8/ أو apps/backend/views/
│
├── index.volt (القالب الرئيسي/Layout)
│ ├── يحتوي على <head>
│ ├── يحمل CSS/JS من CDN + محلي
│ ├── يستخدم متغيرات من ControllerBase:
│ │ ├── $url ← من AWY->getUri()
│ │ ├── $colors ← من Settings
│ │ ├── $conf ← من Settings
│ │ ├── $awy ← كلاس AWY (دوال مساعدة)
│ │ └── $actlang ← اللغة النشطة
│ └── يستدعي partials/ و modules/ عند الحاجة
│
└── [ControllerName]/*.volt (محتوى الصفحة)
🎯 سلسلة ارتباط الموديلات (Models)
أي Controller أو Stub
│ └── Models:
│ ├── \Models\Settings::findFirst() ← إعدادات الموقع
│ ├── \Models\Ads::find() ← الإعلانات
│ ├── \Models\Users::findFirst() ← المستخدمين
│ ├── \Models\Categories::find() ← التصنيفات
│ └── ... إلخ
│ └── كل Model يرتبط بجدول في MySQL عبر PDO
🎯 سلسلة ارتباط الـ Assets (CSS/JS)
index.volt (القالب الرئيسي)
│
├── مكتبات CDN: Font Awesome, Bootstrap, jQuery... (من asset_versions.php)
│
├── CSS المحلي:
│ ├── assets/AWY-V8/css/out/style.min.css ← الموقع العام
│ └── assets/Panel/css/main.min.css ← لوحة التحكم
│
├── JS المحلي:
│ ├── assets/AWY-V8/js/custom.min.js ← الموقع العام
│ └── assets/Panel/js/main.min.js ← لوحة التحكم
│
└── كل Controller يضيف CSS/JS إضافي:
├── home-v2.css + home-v2.js ← الصفحة الرئيسية فقط
├── category-v2.css + category-v2.js ← التصنيفات فقط
├── ilan-v2.css + ilan-v2.js ← تفاصيل الإعلان فقط
└── contract.min.css + payment.min.css ← صفحات خاصة
📊 ملخص العلاقات بين المكونات
.htaccess
│
▼
public/index.php
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
apps/config Router DI Container
(Settings) (Routing) ├── db (MySQL PDO)
├── session
├── cookies
└── view (Volt)
│
▼
Module.php
│
▼
ControllerBase
│
▼
Controller (مثل IndexController)
│
├── يستخدم Models
├── يستخدم Library (AWY Stubs, PHPMailer, Sms...)
│
▼
View (Volt)
├── index.volt (Layout)
│ ├── CSS (CDN + Assets/AWY-V8/css)
│ ├── JS (Assets/AWY-V8/js)
│ ├── partials/
│ └── modules/
│
└── صفحة المحتوى (مثل index/index.volt)
الترجمة: apps/frontend|backend/langs/{ar,en,tr}/
المبدأ الأساسي:
طلب → .htaccess → index.php → Router → Module → ControllerBase → Controller → Model + Library → View (Volt) → CSS/JS