التطبيقات
تطبيق Frappe هو حزمة Python تستخدم إطار عمل Frappe. تعيش تطبيقات Frappe في دليل يُسمى apps داخل دليل frappe-bench.
التطبيق الافتراضي frappe هو تطبيق Frappe يعمل كإطار عمل لجميع التطبيقات. يجب أن يحتوي تطبيق Frappe على إدخال في ملف apps.txt.
إنشاء تطبيق
يأتي Frappe مع هيكل أساسي لتطبيق جديد. لإنشاء تطبيق جديد، قم بتشغيل الأمر التالي من دليل frappe-bench:
$ bench new-app custom_app
INFO:bench.app:creating new app custom_app
App Title (default: Custom App):
App Description: Custom Frappe App
App Publisher: John Doe
App Email: custom@johndoe.com
App Icon (default 'octicon octicon-file-directory'):
App Color (default 'grey'):
App License (default 'MIT'):
'custom_app' created at /Users/johndoe/frappe-bench/apps/custom_app
INFO:bench.app:installing custom_app
INFO:bench.utils:./env/bin/pip install -q -e ./apps/custom_app
سيتم الآن إنشاء دليل custom_app في دليل apps. سيتم أيضًا إضافته إلى apps.txt.
هيكل الدليل
سيبدو هيكل دليل التطبيق شيئًا كالتالي:
apps/custom_app
├── MANIFEST.in
├── README.md
├── custom_app
│ ├── __init__.py
│ ├── config
│ │ ├── __init__.py
│ │ ├── desktop.py
│ │ └── docs.py
│ ├── custom_app
│ │ └── __init__.py
│ ├── hooks.py
│ ├── modules.txt
│ ├── patches.txt
│ ├── public
│ │ ├── css
│ │ └── js
│ ├── templates
│ │ ├── __init__.py
│ │ └── includes
│ └── www
├── license.txt
├── requirements.txt
├── dev-requirements.txt
├── package.json
└── setup.py
- requirements.txt: يخزن هذا الملف قائمة تبعيات Python. عند تثبيت هذا التطبيق، سيتم تثبيت تبعياته أيضًا.
- dev-requirements.txt (اختياري): يخزن هذا الملف قائمة تبعيات تطوير Python. بناء هذا الملف هو نفسه
requirements.txt. إذا كان وضع المطور ممكّنًا، فإن تثبيت التطبيق سيؤدي أيضًا إلى تثبيت تبعيات التطوير الخاصة به. - package.json: يُستخدم هذا الملف لتتبع تبعيات node. تعلم المزيد حوله هنا.
- custom_app/: هذا هو الدليل الذي يتم فيه تخزين ملفات المصدر.
- customapp/customapp: عند إنشاء تطبيق جديد، يتم أيضًا إنشاء وحدة نمطية بنفس الاسم داخل التطبيق. هذا هو الدليل الذي يتوافق مع تلك الوحدة النمطية.
- custom_app/hooks.py: يُستخدم هذا الملف للربط بأحداث frappe وتوسيع السلوك القياسي لـ frappe أو تجاوزه. تعلم المزيد عن الخطافات.
- custom_app/modules.txt: يتم تنظيم كل تطبيق Frappe في وحدات نمطية مختلفة. كل DocType هو جزء من وحدة نمطية. يتم سرد هذه الوحدات النمطية في هذا الملف. تعلم المزيد عن الوحدات النمطية.
- custom_app/patches.txt: يُستخدم هذا الملف لتخزين مراجع التصحيحات التي تعمل في ترحيل قاعدة البيانات. تعمل هذه التصحيحات بالترتيب، ويتم تشغيلها مرة واحدة فقط. تعلم المزيد عن ترحيل قاعدة البيانات.
- custom_app/public: مجلد
publicهو مجلد ثابت ويمكن تقديمه بواسطة nginx في الإنتاج. يمكن الوصول إلى الملفات الموضوعة هنا عبر عنوان URL/assets/custom_app/**/*. على سبيل المثال، يمكن الوصول إلى الملفpublic/img/logo.pngعبر عنوان URL/assets/custom_app/img/logo.png. يُستخدم هذا المجلد لتخزين الأصول الثابتة المستخدمة مباشرةً في جانب العميل مثل JS و CSS والصور. - custom_app/templates: يُستخدم مجلد
templatesلكتابة وإدارة قوالب Jinja. يمكن تنظيمها بأي طريقة تريدها. يتم مسح هذا الدليل مباشرةً عند استخدامها في قوالب Jinja. على سبيل المثال، عند تضمين جزء{% include "templates/navbar/navbar.html" %}، سيقوم أولاً بمسح هذا الدليل ثم ينتقل إلى التطبيقات الأخرى. - custom_app/www: يتم تعيين الملفات في هذا الدليل مباشرةً إلى صفحات البوابة (portal pages) وتطابق عناوين URL بنية الدليل. تعلم المزيد عن صفحات البوابة.
تثبيت تطبيق على موقع
لاستخدام تطبيق، يجب تثبيته على موقع. تثبيت تطبيق على موقع يعني إنشاء النماذج المرفقة مع التطبيق في الموقع، مما يعني إنشاء جداول قاعدة البيانات في قاعدة بيانات الموقع.
لتثبيت تطبيق على موقع، قم بتشغيل الأمر التالي:
$ bench --site site_name install-app custom_app
Installing custom_app...
للتحقق مما إذا تم تثبيت التطبيق بشكل صحيح، قم بتشغيل الأمر التالي:
$ bench --site site_name list-apps
frappe
custom_app