لاحظ أن هذا المشروع لا يتم صيانته حاليًا ، فقد تم استبداله بتطبيق قائم على جولانج والذي يحتوي على ميزة كاملة:
Chronicle هي أداة تقوم بتحويل دليل للملفات النصية البسيطة إلى مدونة HTML ثابتة ، (أو مدونة إذا كنت تفضل).
يحتوي هذا المستودع على إعادة كتابة من الخدش لمترجم Blog Static Chronicle ، والذي يمثل ترقية كبيرة من حيث السرعة والمرونة.
النظام بسيط عن قصد ، لكنه يدعم:
هذا التنفيذ أسرع بكثير في توليد الصفحات من الإصدارات السابقة ، وذلك في المقام الأول لأن المنشورات يتم تحليلها وإدراجها في قاعدة بيانات SQLite ، بدلاً من قراءة كل منشور في ذاكرة الوصول العشوائي.
بمجرد أن يتم ملء منشورات المدونة في قاعدة بيانات SQLite ، يتم إدراجها في سلسلة من القوالب ، والتي تولد الإخراج في النهاية.
على الرغم من أننا نفترض أنك تبقي قاعدة بيانات SQLite حولها لا يهم إذا قمت بحذفها. لا يزال عملية تحليل جميع إدخالاتك عملية سريعة للغاية.
استنساخ المستودع ثم تثبيت كما تفعل أي وحدة CPAN:
perl Makefile.PL
make test
su - make install
تنسيق المدونة بسيط للغاية ، والملف التالي هو عينة:
title: The title of my post
date: 12 August 2007
tags: foo, bar, baz
The text of the actual entry goes here.
However much there is of it.
يتم توجيه الإدخال من قبل رأس صغير ، يتكون من العديد من حقول رئيس الزائفة. يجب فصل الرأس عن الجسم بخط فارغ واحد على الأقل.
يتم تجاهل قيم الرأس غير المعروفة ، ولا يتم تضمين أي جزء من الرأس في الإخراج الذي يتم إنشاؤه.
يتم التعرف على قيم الرأس التالية:
قد يتم إدخال رؤوس إضافية ، والتي سيتم تجاهلها افتراضيًا ، للوصول إلى مكونات إضافية معينة. على سبيل المثال ، سيضمن البرنامج المساعد Chronicle::Plugin::SkipDrafts إدخالات المدونة إذا كانت لا تزال مسودات - وتشمل draft:1 . وبالمثل ، هناك مكون إضافي يسمى PostSpooler والذي سيتجاهل المنشورات حتى بياناتها المستحقة ، والتي تستخدم رأس publish الخاص - بدلاً من date الافتراضي.
على افتراض أن لديك دليلًا يحتوي على عدد من منشورات المدونة ، يجب أن تكون قادرًا على إنشاء مدونتك مثل ذلك:
chronicle --input=path/to/input --output=/path/to/output
--theme=blog.steve.org.uk
سيؤدي ذلك إلى قراءة path/to/input/*.txt وإنشاء المدونة أسفل الدليل /path/to/output/ إنشاء هذا الدليل إذا فقدت.
سيتم إنشاء قاعدة بيانات SQLite على ./blog.db افتراضيًا ، وإذا تم حذفها ، فسيتم تجديدها.
أظهر المثال السابق الاستخدام الأساسي ، وهو تغيير واضح يفضله معظم المستخدمين هو تعيين عنوان المدونة ، والرجوع الفرعي:
chronicle --title="Steve Kemp's Blog" --sub-title="Writings about cake" ..
إذا بدأت في إعداد قيم متعددة ، فقد تفضل استخدام ملف التكوين بدلاً من ذلك. سوف تقرأ Chronicle /etc/chronicle/config ، و ~/.chronicle/config قبل البدء. في الفشل في يمكنك تحديد ملف تكوين خاص بك عن طريق --config=/path/to/conf .
يطابق ملف التكوين وسيطات سطر الأوامر بالضبط ، لذلك معطى "-foo = bar" سيسمح ملف التكوين بتعيين نفس الشيء عبر:
foo = bar
كما لاحظنا سابقًا أن جيل المدونة يحدث إلى حد كبير عبر سلسلة من الإضافات. على سبيل المثال ، قد يعرض الشريط الجانبي قائمة جميع العلامات ، والتي يمكن أن تحصل على غير عملي بسرعة. إذا كنت ترغب في تعطيل أنه يمكنك القيام بذلك عبر:
chronicle --exclude-plugins=AllTags,RecentPosts --force ..
ملاحظة : توجد المكونات الإضافية التي تنشئ صفحات الإخراج أسفل
Chronicle::Plugin::Generateمساحة الاسم. توجد المكونات الإضافية التي تنشئ قصاصات متوفرة لجميع الصفحات تحت مساحةChronicle::Plugin::Snippets.
ملاحظة : نظرًا لأن المقتطفات مدرجة في كل صفحة ، في السمات الافتراضية ، أضفناها
--forceتحديث صفحات الإخراج.
في مثالي ، يجب أن تكون قادرًا على الترحيل من إصدارات Chronicle السابقة مباشرة إلى قاعدة الشفرة هذه ، لأن الغرض والتشغيل الرئيسي متطابقان:
data/ ، إلا إذا قمت بتحديد مسار مختلف عبر " --input ".*.txt هي إدخالات المدونة ، إلا إذا قمت بتحديد " --pattern=*.blog ".ومع ذلك ، هناك تغييرات ، وهذه تتعلق إلى حد كبير بالقوالب ، إلى جانب اختلافات التنفيذ.
اعتبارًا من Chronicle 5 ، يقوم البرنامج النصي الرئيسي بتوزيع أي وسيطات سطر الأوامر ، ويقرأ منشورات المدونة ، لكن الجيل الفعلي لموقعك يعتمد تمامًا على المكونات الإضافية. المكونات الإضافية عبارة عن وحدات Perl قياسية تقع أسفل مساحة Name Chronicle::Plugin ، وعلى الرغم من أنك لا تحتاج إلى معرفة أي من التفاصيل التي يمكن طلبها بفضل استخدام الوحدة النمطية :: Pluggable :: Order.
إن تغييرات القالب أكثر أهمية قليلاً مما أود ، ولكن لحسن الحظ تتكون هذه التغييرات إلى حد كبير من مواقع جديدة للأشياء ، والصفحات الإضافية.
كما ذكرنا ، فإن الرمز الأساسي ضئيل للغاية ويتم تنفيذ جميع وظائف الإخراج عن طريق الإضافات.
سوف يستدعي النواة الطرق التالية إذا كانت موجودة في المكونات الإضافية:
on_db_createon_db_openon_inserton_initiateon_generateon_initiate باستثناء أن أساليب المكون الإضافي السابق مضمون أن يتم استدعاؤها قبل التذرع on_generate .