arrow-left-short arrow-right-short arrows-fullscreen bar-chart-line-fill bell-fill box-arrow-in-right box-arrow-right check-circle-fill chevron-circle-upclock-fill commentsexclamation-triangle-fill fullscreen-exit gear-fill globe graph-up house-fill images info-circle-fill link-45deg lock-fill pencil-square person-fill person-lines-fill pie-chart-fill plus-lg search upload youtube caret-left-fill caret-right-fill chevron-right commentdiagram-3-fill email eye-fill facebook github linkedin rss-fill twitter
ARVODIA
Web Development Agency

[PHP] [SYMFONY] اكتشاف webfony (عرض تقديمي. تثبيت. استخدام. تطوير)

arvodia
2021-09-20
197

! [شعار EURL ARVODIA] (/ src / img / arvodia.png)
[جدول المحتويات]

الوثائق ليست كاملة على جميع الكود والاستخدام ، لكنها تتحدث عن الأسطر الرئيسية القليلة
بادئ ذي بدء ، أدعوك لقراءة [ReadMe] (/ admin / docs / readme) و [دور المستخدم] (/ admin / users / roles)

ترتيب

تكوين Webfony يدويًا

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

قواعد البيانات التي يدعمها Webfony هي: MySQL و MariaDB و PostgreSQL و SQLite.

لتكوين اتصال بقاعدة بيانات ، قم بتعديل المتغير DATABASE_URL في ملف .env وقم بتشغيل الأمر التالي ، لإنشاء الجداول

""
عقيدة php bin / console: عمليات التهجير: الترحيل "" باستخدام الأمر عقيدة: مخطط: تحديث ، لن تتم إضافة جدول الجلسة ، لذا يوصى باستخدام عمليات الترحيل. في المجلد src / Resources / migrations / الترحيلات لكل نوع من قواعد البيانات (mysql و postgresql و sqlite) ، إذا استخدمت الأمر webfony: install فسيتم استيرادها تلقائيًا.

مراسل رقمي

يمكنك إرسال رسائل البريد الإلكتروني عبر SMTP عن طريق تكوين MAILER_DSN في ملف ".env" الخاص بك.

خريطة الموقع

تكوين المسار لملف Sitemap الخاص بك:

في الملف public / robots.txt ، عدّل متغير خريطة الموقع ، وأضف مضيف موقع الويب الخاص بك ، مع مراعاة http أو https.

مثال: https://www.example.net/sitemap.xml

موقع الكتروني

في ملف .env قم بتعديل المتغيرات SITE_BASE_HOST و SITE_BASE_SCHEME
يتم استخدام هذين التكوينين الأخيرين أيضًا في إرسال البريد بواسطة وحدة التحكم لإنشاء الارتباط.

بمجرد تسجيل الدخول ، ستتمكن من تكوين الموقع على: / admin / system / site-information

تحديث

تحديث التبعيات و Symfony

""
تحديث الملحن $ symfony ""

عرض وصفات symfony بالأمر:

""
وصفات ملحن symfony $ ""

انظر في التفاصيل ، كيفية تحديث الوصفة.

يمكنك استخدام الأمر التالي بعد التحديث لحفظ الملفات أو استعادتها ، ولا سيما تكوينات الاستعادة إذا تم استبدالها بواسطة التحديثات.

""
$ php bin / console webfony: الملف: النسخ الاحتياطي ""

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

Webfony لديه أمره الخاص لتركيبات البيانات.
يسمح بإضافة بيانات وهمية مع إمكانية إنشاء مقالات لا نهاية لها.

""
sc w: d: f -p -n ""

الخيار -p للتطهير ، يمكنك أيضًا حذف جميع الملفات للبدء من الصفر

""
rm -fr private / public / src / files / var / * vendor / public / src / libs / node_modules / ""

وظيفة كرون

يستخدم Webfony Messenger في مهام معينة مثل إرسال البريد ، وقد تم تغيير سلوك Messenger بحيث يتوقف عن العمل إذا لم يكن لديه المزيد من الرسائل لاستهلاكها ، فهو مدمج في webfony cron جنبًا إلى جنب مع crons الأخرى.
إذا كنت تريد تغيير هذا السلوك بحيث يكون Messenger نشطًا طوال الوقت دون توقف ، فراجع الثابت "AUTO_STOP_WORKER" في فئة src / Config / Consts.php

هناك العديد من cron ليتم تنفيذها مثل

  • تطهير الوسائط والتعليقات في المهملات (فاصل زمني 24 ساعة)
  • توليد chartJS للوسائط (فاصل زمني 24 ساعة)
  • إنشاء مخطط JS للجلسات (فاصل زمني 30 يومًا)
  • إنشاء نسخة احتياطية من قاعدة البيانات أو ملفات الوسائط أو أكثر (بفاصل زمني 30 يومًا)
  • يستهلك الرسائل (الفاصل الزمني 1 دقيقة)

نظرًا لأن الأمر cron نفسه يحسب الفاصل الزمني ، لذا قم بجدولة تنفيذ Cron Job كل دقيقة.

""

          • / var / www / webfony / bin / console webfony: cron> / dev / null 2> & 1
            ""

محتويات

المحتوى الرئيسي في webfony هو قسم ومقالة ، والفئات هي قسم مع قسم رئيسي.

يحتوي النظام على منطق صارم لعرض المحتوى على المكتب الأمامي ، ويجب أن يكون المحتوى بلغة مدعومة من قبل الشركة الأم ، وإلا فلن يتم عرضه حتى لو تم نشر حالته.
يمكن تغيير هذا السلوك عن طريق تنشيط خيار "الكل اللغة" في/ admin / Regional / language

نفترض أن المقالة تحتوي على كل ما هو ضروري لمحتوى المكتب الأمامي ، انظر العنوان والوصف والجسم ، لذلك يكفي إنشاء علاقة OneToOne مع كيان المقالة للحصول على محتوى مكتب أمامي آخر ، على سبيل المثال منتج جديد أو كيان إضافة.
وبالتالي تجنبنا ديناميكيات كيان القسم الذي يتكيف من أجله مع جميع الكيانات الأخرى نظرًا لأن المشروع يقتصر على عدم كونه عامًا للغاية.

ولكن إذا كنت ترغب في المضي قدمًا ، يمكنك إضافة حقل قسم للإشارة إلى كيان ، ولكن في هذه الحالة ، يجب تغيير كل المنطق
راجع وحدة تحكم FrontPageController و RubriqueRepository والكيان الجديد يجب أن يكون لهما نفس منطق ArticleRepository

تتيح لك وظيفة findByLocales () في فئة RubriqueRepository إنشاء ذاكرة التخزين المؤقت للقسم ، وتستخدم هذه الوظيفة "استعلامات تكرارية - SQL" والتي تبدأ بتحديد جميع اللغات ثم عمليات البحث لكل لغة عن القسم ، ثم الفئات الموجودة في النهاية لمعرفة ما إذا كان يحتوي على محتوى منشور واحد على الأقل لعرض القسم المنشور.

الأصول والمكتبة

يستخدم Webfony المكوّن الإضافي [grouper] (https://github.com/arvodia/grouper) للتأليف ، لإدارة الأصول ومع مهام grouper التي يسمحون لها بنسخ ملفات CSS / JS وتصغيرها ، في المجلد العام تلقائيًا أثناء التثبيت أو التحديثات.
إذا قمت بتعديل أصول التطبيق ، فيجب عليك تصغير ملفات CSS و JS للتطبيق باستخدام أمر grouper التالي:

""
الهامور الملحن $: مهمة webfony-bs5 -r ""

الخيار -r لـ "مهام التشغيل" ،
يمكنك إضافة مهام أو مجموعة أخرى في ملف grouper.json ، أو بشكل تفاعلي باستخدام الأوامر التالية:

""
الهامور الملحن $: مجموعة الهامور الملحن $: مهمة ""

  • ملحوظة
  • يتم تنفيذ ملفات app.css أو app.js على المكتب الخلفي والمكتب الأمامي
  • تم تجهيز القائمة الرئيسية والثانوية بتمرير أفقي

الأيقونات

يستخدم webfony ملفات SVG للأيقونات ، على سبيل المثال: <svg> <use href = "# global" /> </svg>
les fichier svg "public / src / svg / app" sont compilée dans un seul fichier "قوالب / bs5 / svg / app.svg" يتم تجميع ملفات svg public / src / svg / app في ملف واحدقوالب / bs5 / svg / app.svg باستخدام أمر Grunt التالي:

""

تثبيت اعتمادات npm

تثبيت $ npm

الجمع بين عدة ملفات

النخر
""

ملاحظة: يستخدم النظام الملفات" public / src / favicon / favicon.svg "و" public / src / favicon / apple-touch-icon.png "

تطوير

في وضع التطوير ، يحتفظ متصفح الإنترنت بذاكرة التخزين المؤقت للأصول ،
هناك ثابت ASSET_CACHE في الملفsrc / Config / Consts.php ، والذي يغير هذا السلوك (مع مرشح twig | addKey) ، وأيضًا فيpublic / src / bs5 / js / app.js الثابت "wfAssetNoCache"

تمديد الغصين

يضيف webfony أكثر من 45 وظيفة ومرشحات غصين من بين هذه الوظائف ، تلك التي تنشئ روابط مثل linkAction (كيان ، إجراء) ، فهي تسمح بالحصول على رابط أخضر لوحدة التحكم في الكيان ، لذلك يمكن أن تكون معلمة الإجراء ('show' ، 'edit'، 'trans'، 'delete' or 'page') ، اسم الإجراء الخاص به هو لاحقة اسم المسار ، ولأغراضه يوصى باستخدام webfony command: create: crud لإنشاء crud.
هناك أيضًا وظيفة createPathPage () التي تسمح بنشر الرابط في المكتب الأمامي للمقال ، مع الأخذ بعين الاعتبار الترجمة.

التوجيه وكبار المسئولين الاقتصاديين

تتم الإشارة تلقائيًا إلى صفحات المقالات والأقسام في ملفات خريطة الموقع
تتم الإشارة أيضًا إلى مسارات وحدات التحكم في الإجراءات ، إذا لم يكن لديهم معلمات مطلوبة (بدون قيمة افتراضية) ، وفي كل مرة تضيف فيها وحدة تحكم في الإجراء ، يجب عليك تحديث أسماء المسارات باستخدام الأمر التالي:

""
وحدة تحكم webfony $ symfony: محفوظة ""

يقوم الأمر أيضًا بإنشاء كلمات محجوزة ، واستخدام الرخويات المتزايدة بنفس المسار مثل المسارات ، وأيضًا لأتمتة الإشارة إلى المسارات الجديدة

اسم الطريق

يجب أن تبدأ مسارات الإدارة بـ admin_

طرق الترجمة

إذا كان متعدد اللغات نشطًا ، فستبدأ المسارات تلقائيًا بـ "_local" وإلا فإن البادئة فارغة
إذا كنت تريد إضافة مسار بدون البادئة "_local" ، فقم بإضافته في "src / Resources / config / route.yml" أسفل الملف.

وفرض تثبيت التكوين بهذه التعليمات:

""
/ *var App \ Config \ Config $ config / $ config-> load ("المسارات") -> delete () ؛ ""

FrontPageController

يتم تشغيل مسار "front_page" بأولوية "-20" بمجرد عدم تنفيذ المزيد من المسار ويقوم هذا المسار بتحويل عنوان URL إلى استعلام SQL ، اعتمادًا على عناوين URL لتهيئة النوع في / admin / system / site- المعلومات

  • مستوى واحد: / section | category-1 | category-1-2 | مقالة
  • مستويان: / قسم | فئة 1 | فئة 1-2 / مقالة
  • ثلاثة مستويات: / قسم / فئة 1 | فئة 1-2 / مقالة
  • العمق اللانهائي: / قسم / فئة 1 / فئة 1-2 / مقالة

يمكنك اختيار كيفية حساب عنوان الصفحة. يُشار إلى الشريط العمودي (|) في الأمثلة "أو".

الثوابت

حتى إذا كان webfony مزودًا بنظام إدارة تكوين صغير (قاعدة بيانات ، YAML و JSON) ديناميكيًا ، إلا أنه يحتوي أيضًا على ثوابت يمكن أن تجدها في فئة src / Config / Consts.php.

الثوابت الأخرى التي يمكن تغييرها في فصول PHP الأخرى:

قائمة الفئات

الثابت "ROOT_TREE" ، في الفئة src / Twig / RubriqueExtension.php ، يسمح لك باختيار بداية هيكل الشجرة

  • صحيح -> بداية هيكل الشجرة من قسم الجذر
  • خطأ -> بداية هيكل الشجرة من القسم الحالي

خريطة الموقع النتيجة القصوى

الحد الأقصى لنتيجة خريطة الموقع محدد بـ 50000 ، وهو عدد عناوين URL التي يستردها Google في خريطة الموقع
إذا كنت تريد تغيير عدد النتائج ، فستجدها في الثابت "FULL_MAX" ، في الفصل الدراسي src / Repository / ArticleRepository.php

تكوين نوع التخزين

الثابت "TYPE_STOCK" ، في الفئة src / Config / Config.php
يسمح لك باختيار مكان حفظ التكوين أو في قاعدة البيانات أو ملف YML أو كليهما هناك أيضًا FORCE_USE_YAML ثابت قائمة لفرض الحفظ بتنسيق yaml. لا تلمس ما لم تكن على علم بالتغيير.

تكوين استنساخ

تغيير سلوك فئة config

مثال:
"" $ config_1 = $ config-> تحميل ('file_1') ؛ تفريغ ($ config_1-> get ()) ؛ // عرض بيانات file_1 $ config-> تحميل ('file_2') ؛ تفريغ ($ config_1-> get ()) ؛ // إظهار بيانات file_2 ""

بحيث يعرض $ config_1-> get () بيانات file_1 في الاستخدام الثاني
الطريقة الأولى: تغيير "CLONE_LOAD" الثابت إلى "صحيح" الطريقة الثانية: $ config_1 = clone $ config-> load ('file_1') ؛

Remark: إن CHMODs المستخدمة بواسطة الأمرwebfony: أذونات ليس لها علاقة بثابت CHMOD لفئة Consts.php

المصطلح

تعني صفحة المصطلح عرض المحتوى على جزء المكتب الأمامي.
يشير المصطلح إظهار إلى عرض المحتوى على جزء المكتب الخلفي. يوجد أيضًا اختلاف بين محتوى الصفحة والصفحة مما يسمح بتغيير عدد النتائج المراد عرضها.

ترجمة

يدير webfony تنشيط اللغة ديناميكيًا في / admin / Regional / language
اللغة الافتراضية () تسمح بعرض المحتوى بجميع اللغات. la langue default () c'est un simple paramètre mais sa programmation ajouter des vérification supplémentaire et donc performance inférieures ، يمكنك تمكين أو تعطيل الإعداد على الصفحة / admin / Regional / language

لغات إضافية

يتيح لك التكوين الأولي لـ Webfony الاختيار بين 22 لغة ، إذا كنت ترغب في إضافة لغة ، فابدأ بإضافة رمز اللغة في معلمة app.supported_locale لملفconfig / services.yaml ، وأنشئ ملفات الترجمة في الدليل "/ translations /" بالأمر التالي:

""
ترجمة وحدة تحكم $ symfony: update --force localeCode "" في النهاية لتفعيل لغتك الجديدة ، انتقل إلى الصفحة / admin / Regional / language

Remark: من أجل عدم كسر الكود ، تجنب تغيير التكوينات يدويًا أو باستخدام فئة Config.php ، نظرًا لوجود بعض التكوينات المرتبطة بالبرامج النصية ، لذلك يوصى باستخدام نماذج جزء المسؤول.

ترجمة واجهة المستخدم

تتم ترجمة نصوص الترجمات تلقائيًا ، لذا فقد تحتوي على أخطاء ، ولكن يمكنك تصحيحها أو تعديلها أو إضافة هذه النصوص على الصفحة "/ admin / Regional / translate"

جدول البيانات

يستخدم webfony Datatable لقائمة النتائج ، كما أن Datatable مزود أيضًا بنص ترجمة ، إذا كنت ترغب في تحديث هذه النصوص ، فراجع الرابط https://datatables.net/plug-ins/i18n/
أو قم بالتنزيل من جيثب: "" استنساخ git $ https://github.com/DataTables/Plugins.git ""

بعد التنزيل ، انقل الملفات من الدليل "/ i18n /" إلى الدليل "/ public / src / bs5 / js / datatables / translate /"

الجلسات

ملاحظة: إذا كنت تريد تخزين الجلسات في قاعدة بيانات ، فإن حقل BLOBtype يخزن حتى 64 كيلو بايت. إذا تجاوزت بيانات جلسة المستخدم هذه القيمة ، فيمكن طرح استثناء أو إعادة تعيين جلسته بصمت.
ضع في اعتبارك استخدام MEDIUMBLOB ، إذا كنت بحاجة إلى مساحة أكبر.

نظام تخزين الجلسة

في الملف config /pack / framework.yaml
للتخزين في قاعدة البيانات المستخدمة handler_id: Symfony \ Component \ HttpFoundation \ Session \ Storage \ Handler \ PdoSessionHandler للتخزين في الملفات المستخدمة "handler_id: session.handler.native_file"

جلسات الناس

الصفحة "/ admin / users / session" أساسية ولكنها تسمح برؤية المستخدمين عبر الإنترنت باستخدام التصفية ، إما أن تستخدم الجلسة الأساسية لتقديمها أو جلسة الملف.
تحتوي فئة SessionManager على وظيفة BETA التي تسمح للمستخدم بتسجيل الخروج من الجلسات النشطة الأخرى ، ولكنها BETA لأنها لا تعمل إذا قام المستخدم بتسجيل الدخول بجلسات ملفات تعريف الارتباط ، ولكن إذا قمت بإلغاء تنشيط حساب ، فإن webfony يستخدم نظامًا آخر لإجبار المستخدم على تسجيل الخروج.

المحررين

تم تجهيز webfony بالعديد من برامج تحرير النصوص (editorjs ، trumbowyg ، markdown) ، ولكن بنسخة مخصصة على سبيل المثال تسمح بعرض الوسائط أو chartJS مع editorjs ، أو تحسينات أخرى.

لا يُسمح بعلامات h1 نظرًا لأن عنوان المقالة يحتوي على علامة h1 ، ولا يُنصح باستخدام علامات h1 متعددة ، يمكنك تغيير هذا السلوك فقط من أجل تخفيض السعر الثابت MD_H1_TO_H2 للفئةConsts.php.

مثال على بناء الجملة الشكلي

""
فيديو:! [wf-video] (/ src / files / 2021-08 / ma-video.mp4 "/src/files/2021-08/ma-video.mp4") youtube:! [wf-iframe] (https://www.youtube.com/embed/xxxxxxxxxx "https://www.youtube.com/embed/xxxxxxxxxx") ""

مثال على البرنامج المساعد EditorJS

مثال بسيط حول كيفية إضافة محرر ملحق JS

  • composer req npm-asset / editorjs - simple-image
  • grouper.json: إضافة تتطلب (صورة بسيطة) مع المهام "file-mapping-overwrite"
  • grouper.json: في editorjs أضف المهام "js-minifying-overwrite" لإضافة الملف إلى editorjs.full.min.js
  • في العامة / src / js / editor / wfeditorjs.js وظيفة ejsGetConfig () أضف "صورة: SimpleImage"
  • في src / Resources / editors / editorjs.json: أضف "صورة" مع العلامات والنوع المسموح بهما
  • في src / Manager / EditorManager.php: أضف صورة في محرر الوظيفة jsToHtml ()

التكوين: editorjs.json
"" "صورة": {"url": {"type": "string"، "allowedTags": ""}، "caption": {"type": "string"، "allowedTags": ""}، "withBorder" : {"type": "bool"، "allowedTags": ""}، "withBackground": {"type": "bool"، "allowedTags": ""}، "stretched": {"type": "bool "،" allowedTags ":" "}،" align ": {" type ":" string "،" canBeOnly ": [" left "،" center "،" right "،" justify "]}} ""

الوسائط المتعددة

يمكن ضبط تكوين الوسائط المتعددة على الصفحة "admin / media" ، هل يوصى باستخدام تحديد حجم تحميل ملف أقل من المسموح به بواسطة php.ini
يمكن أن تكون ملفات الوسائط عامة أو خاصة ، لذا يمكن أن يكون مسارها:

خاص: https://www.example.com/src/private/show/2021-08/ma-photo.jpg
عام: https://www.example.com/src/files/2021-08/ma-photo.jpg

تنزيل خاص: https://www.example.com/src/private/download/2021-08/ma-photo.jpg
عام: https://www.example.com/src/download/2021-08/ma-photo.jpg

يسمح لك النظام بتطبيق ثلاثة مرشحات على صورة (الحجم | المقياس | الحد الأقصى) ، فقط أضف الحجم والمرشح في عنوان URL ، على سبيل المثال:

/src/files/2021-08/ma-photo-size-240x180.jpg
/src/files/2021-08/ma-photo-scale-240x180.jpg /src/files/2021-08/ma-photo-max-240x180.jpg

لا يوجد سوى أحجام معينة مسموح بها ، لإضافة حجم آخر راجع الثابت "ALLOWED_SIZE" في الفئةFileController.php

"ملاحظة": في تحرير المقالة فقط لمؤلف المقالة الذي يمكنه إضافة وسائط ، يمكن للمسؤول فقط حذف الوسائط.

في إصدار المقالة ، يمكننا إضافة وسائط في النص الأساسي أو في عنصر تحكم الوسائط المتعددة ، ولم يعد بالإمكان تغيير الوسائط الموجودة على الوسائط المتعددة في حالتها إذا تم نشر المقالة ، على عكس الوسائط التي تجدها في حقل الجسم والتي يمكن تغييرها من قبل الشخص الذي لديه حق الوصول إلى تحرير المقالة.

المادة علاقة الكيان

في منطق webfony ، لا يوجد سوى كيان المقالة الذي يمكن عرضه على الموقع الأمامي بحيث يمكن عرض الكيانات الأخرى في المكتب الخلفي للجزء من قبل المسؤول ، لحل هذه المشكلة ، يمكنك ببساطة إجراء علاقة مع مقال مع كيان آخر ولهذا:

  • عليك أن تبدأ بإلغاء التعليق على "استخدام العلاقة ؛" في "article.php"
  • اكتب الأمرين php bin / console m: mig وphp bin / console d: m: m
  • ثم تبدأ بإنشاء كيان جديد
  • ثم تستخدم الأمر الخاص بـ webfony والذي يسمح لك بإنشاء محتوى غير حقيقي
  • النموذج الذي يمكن عرضه في المقدمة سيكون باسم / Templates / bs5 / content / Example.html.twig
  • إذا كان لديك أذونات المسؤول ، يمكنك الانتقال إلى أي مقال ستجد قسم علاقة يسمح لك بإقامة علاقة مع كيان آخر

السجلات

يتم حفظ سجلات التطبيق فقط في قاعدة البيانات ، ويمكن عرضها على صفحة لوحة المعلومات.

مخبأ

يستخدم النظام ذاكرة التخزين المؤقت الخاصة بـ webfony للأقسام المنشورة ، ثم باستخدام هذا الفصل يبحث فقط عن المقالات وفقًا لهذه الأقسام.
mais aussi un cache http pour les articles récentes et autre information pas trop dynamique. في النهاية ذاكرة تخزين مؤقت أخرى لعرض برامج تحرير النص.

ملاحظة:" إجمالي وقت التنفيذ "لشريط ملف التعريف في وضع مطور البرامج الذي يتضح أنه لا يتم عرضه بشكل صحيح بسبب ذاكرة التخزين المؤقت لـ render_esi ()

يمكنك رؤية ذاكرة التخزين المؤقت لـ http باستخدام هذا الأمر:

""
$ curl -s -I -X احصل على https://127.0.0.1:8000/ ""

تحسين المشروع

  • أضف قيودًا على حجم مجلد تخزين الوسائط لكل مستخدم
  • إضافة كيان العلامات للمقال
  • إضافة كيان خاصية المنتج وإقامة علاقة عديدة مع كيان المقالة
  • نظام الرسائل الإخبارية
  • إضافة التصفية حسب التاريخ في الشريط الجانبي للمكتب الأمامي
  • نموذج الاتصال الشخصي لكل مستخدم (أو المراسلة الفورية)
اتصال لنشر تعليق

0 تعليق

كن أول من يعلق على هذه المقالة.