Skip to content

MelisDemoCms

موقع المرجع/العرض التوضيحي الرسمي لمنصة Melis Platform — وحدة موقع (site module) جاهزة للتثبيت تُعلّم المطورين كيفية تركيب موقع واجهة أمامية (front-office) في Melis. الحزمة melisplatform/melis-demo-cms.

الغرض

إن MelisDemoCms هو موقع واجهة أمامية (front-office) كامل وقابل للتثبيت (melis-site: true، type: melisplatform-module، الفئة cms). وهو ليس أداة إدارة خلفية (back-office): فصفحاته ووحدات التحكم (controllers) وقوالب المكوّنات الإضافية (plugins) تُوضّح تقنيات تركيب المحتوى الثلاث — الوضع اليدوي للمكوّنات الإضافية، مناطق السحب والإفلات (drag-and-drop) والوسوم القابلة للتحرير المُضمّنة (inline editable tags) — باستخدام MelisFront وMelisEngine ووحدات محتوى CMS (slider وnews وprospects). استخدمه بوصفه التنفيذ المرجعي عند بناء موقع.

الصفحة الرئيسية الحيّة للواجهة الأمامية في MelisDemoCms — شريط التنقل العلوي (News / Team / Our Services / Our Process / FAQ / Contact)، وقسم البطل (hero) "Melis Demo Cms" مع دعوة لاتخاذ إجراء "Try to Free" فوق رسم بطل يمثّل لوحة تحكم. هذا هو موقع العرض التوضيحي المُصيَّر على الخادم (server-rendered)، وليس شاشة إدارة خلفية بـ React.

لا توجد له إدارة خلفية بـ React

قدّمت Melis v6 إدارة خلفية بـ React، لكن MelisDemoCms هو موقع واجهة أمامية (front-office)، وليس أداة إدارة خلفية، ولذلك فهو غير مُرحَّل إلى React عن قصد:

  • لا يوجد مشروع لبنة ui-react/، ولا public/ui-react/brick.manifest.json؛
  • لا توجد نقاط نهاية config/react-api.php ولا قدرات config/react.capabilities.php؛
  • لا يوجد مدخل في الشريط الجانبي ولا عقدة قائمة في /melis-react.

لن تبحث أبدًا عن أداة "MelisDemoCms" في واجهة React. فموقع العرض التوضيحي هو محتوى تعمل عليه أدوات CMS العامة في React، والموقع الحيّ مُصيَّر على الخادم (server-rendered) بواسطة MelisFront/MelisEngine كلما تصفّح زائرٌ النطاق.

كيف تعمل عليه في /melis-react

بما أن الوحدة لا تملك أداة خاصة بها، فإنك تحرّرها باستخدام أدوات CMS العامة في React:

أداة Reactما تفعله بها هنا
CMS page editorافتح أي صفحة عرض توضيحي (Home، News، Team، FAQ، Contact…) من شجرة CMS Pages وحرّر كتلها المُضمّنة ومناطق السحب والإفلات ومكوّناتها الإضافية. سطح التحرير الأساسي.
Mediaإدارة الصور/الملفات التي تشير إليها الصفحات.
Sitesإعدادات النطاق/اللغة الخاصة بموقع العرض التوضيحي.
Templatesقوالب الصفحات التي تستخدمها صفحات CMS.

أين: الشريط الجانبي ← CMS Pages ← افتح صفحة من موقع العرض التوضيحي في المحرّر. لا يوجد مدخل "MelisDemoCms" في الشريط الجانبي — فالوحدة هي المحتوى، وليست أداة.

تفعيله

إن MelisDemoCms وحدة موقع Laminas تُثبَّت ضمن module/MelisSites/MelisDemoCms/ بواسطة installer-paths الخاص بـ Composer. ويُصرّح ملفه config/module.load.php بالوحدات التي يتوقّع تحميلها إلى جانبه:

php
// vendor/melisplatform/melis-demo-cms/config/module.load.php
'MelisAssetManager', 'MelisEngine', 'MelisFront',
'MelisCmsNews', 'MelisCmsSlider', 'MelisCmsProspects',
'MelisDemoCms', 'MelisCmsPageScriptEditor'

اعتماديات Composer المطلوبة: melis-cms، melis-cms-slider، melis-cms-prospects، melis-cms-news، melis-cms-page-script-editor (^6.0). أما melis-engine وmelis-front فمُقترحان (ومطلوبان في وقت التشغيل). ويُفعَّل الموقع لنطاق معيّن بضبط متغيّر بيئة الـ vhost MELIS_MODULE "MelisDemoCms".

الخدمات الأساسية

اسم الخدمة المستعارالدور
DemoCmsServiceمساعِدات خاصة بالموقع تستخدمها وحدات التحكم الأمامية ومستمِعو الإعداد (setup listeners).
MelisPlatformTableبوابة جدول عامة فوق جدول المنصة الأساسي (MelisEngine\Model\Tables\MelisGenericTable، المفتاح الأساسي plf_id).

إعداد الموقع (المُثبِّت، وليس React)

لا تضيف هذه الوحدة أي مداخل في شجرة أدوات الإدارة الخلفية. وسطحها الوحيد في الإدارة الخلفية هو معالج إعداد الموقع (site setup wizard) المستخدَم من قِبل السوق/المُثبِّت: وحدات التحكم MelisDemoCms\Controller\MelisSetupController (المسار /MelisDemoCms/setup)، وMelisSetupPostDownloadController وMelisSetupPostUpdateController. وتوجد إعدادات الإعداد في config/setup/download.config.php وconfig/setup/update.config.php. وهذا شأن يخصّ الخلفية / سطر الأوامر (CLI) دون أي سطح في React.

الواجهة الأمامية

يُدار الموقع بواسطة وحدات تحكم موقع MelisFront اعتيادية، واحدة لكل نوع صفحة:

وحدة التحكمالصفحة
MelisDemoCms\Controller\Homeالرئيسية (carousel + slider ثانوي، شهادات العملاء، لافتة GDPR)
MelisDemoCms\Controller\Newsقائمة الأخبار / تفاصيل الخبر
MelisDemoCms\Controller\Teamالفريق
MelisDemoCms\Controller\Servicesقائمة الخدمات / التفاصيل
MelisDemoCms\Controller\Faqصفحة الأسئلة الشائعة وكتل الفئات
MelisDemoCms\Controller\Contactالتواصل / نموذج العملاء المحتملين (prospects)
MelisDemoCms\Controller\Testimonialشهادة عميل
MelisDemoCms\Controller\Template / DragDropعروض القوالب التوضيحية (ثابتة / سحب وإفلات / مختلطة)
MelisDemoCms\Controller\Searchنتائج البحث داخل الموقع (Lucene؛ مُعطَّل في العرض التوضيحي)
MelisDemoCms\Controller\Page404صفحة الخطأ 404

بدلًا من أن يشحن MelisDemoCms مكوّناته الإضافية الخاصة، فإنه يوفّر تجاوزات لقوالب المكوّنات الإضافية (view/plugins/*.phtml) مربوطة في config/melis.plugins.config.php:

مكوّن القوالب الإضافي (الوحدة المالكة)القوالب التي يوفّرها هذا الموقع
MelisFrontMenuPlugin (MelisFront)menu، white-menu، footer-menu
MelisFrontShowListFromFolderPlugin (MelisFront)faq-listing، faq-values، home-testimonial-slider
MelisFrontGdprBannerPlugin (MelisFront)gdpr-banner
MelisCmsSliderShowSliderPlugin (MelisCmsSlider)home-carousel-slider، home-slider2، team-slider
MelisCmsNewsListNewsPlugin / …ShowNewsPlugin / …LatestNewsPlugin (MelisCmsNews)news-list، news-details، latest-news-vertical، latest-news-horizontal
MelisCmsProspectsShowFormPlugin (MelisCmsProspects)prospect-form

تقنيات التركيب الثلاث

التقنيةكيف تعملصفحات مثال
الوضع اليدوييُنشَأ المكوّن الإضافي داخل وحدة التحكم، ويُصيَّر مع الوسائط (params)، ويُضاف بوصفه عنصرًا فرعيًا للعرض — ثم يعرضه العرض (view echoes it).الرئيسية، الفريق (slider)، الأخبار، الأسئلة الشائعة، التواصل
منطقة السحب والإفلاتيُصرّح ملف .phtml بمنطقة مُسمّاة؛ ويُفلِت محرّر صفحات CMS في React أي مكوّن إضافي فيها؛ دون أي شيفرة في وحدة التحكم.DragDrop، عروض القوالب
الوسوم القابلة للتحرير المُضمّنةيغلّف MelisTag قيمة افتراضية داخل العرض؛ ويحرّر المؤلّف النصّ/الصور في مكانها من محرّر صفحات React.الخدمات، شهادة العميل، 404

المستمِعون (Listeners)

يقود SetupDemoCmsListener عملية تثبيت الموقع. ويكتب MelisDemoCmsCreateConfigListener ملف MelisDemoCms.config.php من .config.stub بعد التثبيت من السوق. ويخصّص SiteMenuCustomizationListener قائمة الواجهة الأمامية. ويعدّل LatestNewsHorizontalListener مخرجات مكوّن أحدث الأخبار الإضافي.

قاعدة البيانات

لا يعرّف MelisDemoCms أي جداول melis_* خاصة به. ويقرأ MelisPlatformTable جدول melis_core_platform الأساسي. ويُنشَأ كل محتوى العرض التوضيحي (الصفحات، القوالب، أشرطة التمرير، الأخبار، مفاتيح الإعداد) وقت التثبيت بواسطة مستمِعي الإعداد، اعتمادًا على قيم config/MelisDemoCms.config.php مثل home_page_id وnews_page_id وhome_page_slider_1_id.

مثال

تُصيّر وحدة تحكم أمامية مكوّنًا إضافيًا للقوالب بحقن مسار قالب خاص بالموقع ومعرّف مدفوع بالإعداد — وهو النمط المستخدَم في الموقع بأكمله (HomeController):

php
$cfg = $this->getServiceManager()->get('MelisSiteConfigService');

$slider = $this->MelisCmsSliderShowSliderPlugin();
$homeSlider1 = $slider->render([
    'template_path' => 'MelisDemoCms/plugins/home-carousel-slider',
    'id'            => 'homeSlider1',
    'pageId'        => $this->idPage,
    'sliderId'      => $cfg->getSiteConfigByKey('home_page_slider_1_id', $this->idPage),
]);
$this->view->addChild($homeSlider1, 'homeSlider1');
// view: <?= $this->homeSlider1 ?>

تتطلّب منطقة السحب والإفلات استدعاءً واحدًا في العرض — دون أي شيفرة في وحدة التحكم (تُملأ الكتلة من محرّر صفحات CMS في React):

php
<?= $this->MelisDragDropZone($this->idPage, 'dragdropzone_home_1') ?>

وسم قابل للتحرير مُضمّن مع قيمة افتراضية (يُحرَّر في مكانه من محرّر صفحات React):

php
<?= $this->MelisTag($this->idPage, 'static-html-1', 'html', '<h1>Accessible…</h1>') ?>

الملفات الأساسية

الشأنالمسار (ضمن vendor/melisplatform/melis-demo-cms/)
المسارات، وحدات التحكم، خريطة القوالبconfig/module.config.php
الوحدات المُحمّلة مع الموقعconfig/module.load.php
ربط تجاوزات قوالب المكوّنات الإضافيةconfig/melis.plugins.config.php
مفاتيح الإعداد لكل موقع (معرّفات الصفحة / الـ slider / المجلد)config/MelisDemoCms.config.php، …config.stub
تدفّق إعداد الموقعconfig/setup/download.config.php، config/setup/update.config.php
التمهيد (Bootstrap) وتسجيل المستمِعينsrc/Module.php
خدمة مساعِد الموقعsrc/Service/DemoCmsService.php
وحدات تحكم الإعداد وما بعد التثبيتsrc/Controller/MelisSetupController.php، …PostDownloadController.php، …PostUpdateController.php
مستمِعو التثبيت / القائمة / الأخبارsrc/Listener/
قوالب المكوّنات الإضافيةview/plugins/*.phtml
عروض الصفحاتview/melis-demo-cms/*/*.phtml
عروض القوالب التوضيحيةview/melis-demo-cms/template/

انظر أيضًا: مرجع الوحدات، بناء موقع، المكوّنات الإضافية.