مولد موقع ثابت خفيف الوزن مكتوب بلغة بايثون.
سمات:
pip install --upgrade gnrt
قد تحتاج إلى إضافة $HOME/.local/bin
إلى $PATH
الخاص بك.
gnrt
سيبحث gnrt
عن ملف config.yml
اختياري في دليل العمل الحالي، وقوالب Jinja2 الاختيارية في مجلد templates
، وملفات تخفيض السعر في مجلد content
، ثم كتابة ملفات الإخراج التي تم إنشاؤها في المجلد public
، مع احترام مجلد content
والفرعي هيكل المجلدات.
للحصول على قائمة الخيارات، استخدم:
gnrt -h
يتم تخزين التكوين في config.yml
. يُسمح بأي زوج من القيمة الرئيسية. يمكن استخدام هذه المفاتيح وقيمها في ملفات المحتوى والقالب.
---
sitename: My awesome blog
baseurl: https://example.com
language: en
foo: bar
إذا كان الملف config.yml
موجودًا، فسيقوم gnrt
بالبحث عن الإعدادات defaults
وإدخالات lists
.
هذا هو المكان الذي تحدد فيه قيم التكوين الافتراضية، والتي يمكن تجاوزها في ملفات المحتوى.
مثال:
defaults:
template: default.j2
markdown-extras:
- break-on-newline
- fenced-code-blocks
nav: includes/nav.html
bar: foo
هذه المفاتيح لها معنى محدد، ويمكن تجاوز قيمها في ملفات المحتوى، مثل أي default
آخر.
markdown-extras
: يسمح بتمكين ملحقات Markdown، راجع الإضافات للحصول على قائمة القيمtemplate
: يضبط قالب Jinja الافتراضي الذي سيتم استخدامه أثناء عرض ملفات المحتوىهذا هو المكان الذي يتم فيه تحديد قوائم المحتوى، مما يسمح بإنشاء قوائم الروابط على سبيل المثال.
مثال:
lists:
nav1:
filter:
key: category
value: page
template: nav-page.j2
nav2:
filter:
key: category
value: article
sort: published
reverse: true
template: nav-article.j2
rss:
filter:
key: category
value: article
sort: published
reverse: true
template: rss.j2
target: public/rss.xml
يمكن للقوائم تحديد المحتوى من خلال filter
، والذي يحصل على key
بيانات تعريف value
متطابقة.
ويمكن فرزها حسب قيمة البيانات الوصفية (على سبيل المثال، تاريخ النشر، عدد صحيح، ...) أو بترتيب للأمام (افتراضي) أو بترتيب reverse
.
أثناء العرض، يتم حفظ المحتوى الذي تم إنشاؤه في مجلد includes
(للتخزين المؤقت)، بينما يمكن تخصيص مسار الملف من خلال المفتاح target
. وهذا يسمح بإنشاء موجز RSS على سبيل المثال.
ملفات المحتوى لها الامتداد .md
ويتم تخزينها في مجلد content
.
قد تحتوي ملفات المحتوى على مادة أمامية - أي بيانات تعريف منظمة - مكتوبة بلغة YAML.
هذا هو المكان الذي يمكن فيه تجاوز القيم الافتراضية.
مثال:
---
id: home
title: Home
link: /
nav-order: 3
---
id
: معرف العنصر الحالي، والذي يمكن استخدامه في أي ملف محتوى للوصول إلى البيانات التعريفية لهذا العنصرlink
: عنوان URL للصفحة التي تم إنشاؤهاtarget
: مسار الملف الذي تم إنشاؤهtitle
: عنوان العنصر الحالي تتم كتابة body
المحتوى في Markdown.
وقد تحتوي أيضًا على صيغة Jinja2 وعناصر نائبة، مما يسمح بحقن قيم dataset
، مثل الروابط إلى صفحات أخرى:
Check the [about]({{ data.about.link }}) page or read the [articles]({{ data.articles.link }})!
راجع نموذج موقع الويب في docs/example
، والذي يمكنك إنشاؤه عن طريق تثبيت gnrt
واستنساخ هذا المستودع والانتقال إلى gnrt/docs/example
وتنفيذ gnrt
.
يمكنك بعد ذلك تصفحه على http://localhost:8080/
بالانتقال إلى المجلد public
الذي تم إنشاؤه وتنفيذ python3 -m http.server 8080
.
قد ترغب أيضًا في التحقق من مدونة مباشرة تم إنشاؤها بواسطة gnrt وقراءة هذه المقالة حول gnrt.