หมายเหตุ โครงการนี้ยังไม่ได้รับการดูแลในขณะนี้ถูกแทนที่ด้วยแอปพลิเคชันที่ใช้ Golang ซึ่งมีคุณสมบัติที่สมบูรณ์:
Chronicle เป็นเครื่องมือที่จะแปลงไดเรกทอรีของไฟล์ข้อความอย่างง่ายเป็นเว็บบล็อก HTML แบบคงที่ (หรือบล็อกหากคุณต้องการ)
พื้นที่เก็บข้อมูลนี้มีการเขียนใหม่จากคอมไพเลอร์บล็อกโครนิเคิลสแตติกซึ่งแสดงถึงการอัพเกรดที่สำคัญในแง่ของความเร็วและความยืดหยุ่น
ระบบนั้นเรียบง่ายโดยเจตนา แต่สนับสนุน:
การใช้งานนี้เร็วขึ้นอย่างมีนัยสำคัญในการสร้างหน้ามากกว่ารุ่นก่อนหน้านี้ส่วนใหญ่เป็นเพราะโพสต์จะถูกแยกวิเคราะห์และแทรกลงในฐานข้อมูล SQLite แทนที่จะให้แต่ละโพสต์อ่านลงใน RAM
เมื่อโพสต์บล็อกได้รับการเติมในฐานข้อมูล 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.
รายการจะถูกนำหน้าด้วยส่วนหัวขนาดเล็กซึ่งประกอบด้วยฟิลด์ Pseudo-Header หลายแห่ง ส่วนหัว จะต้อง แยกออกจากร่างกายอย่างน้อยหนึ่งเส้นเปล่า
ค่าส่วนหัวที่ไม่ทราบจะถูกละเว้นและไม่มีส่วนใดของส่วนหัวรวมอยู่ในเอาต์พุตที่สร้างขึ้น
ค่าส่วนหัวต่อไปนี้ได้รับการยอมรับ:
อาจมีการแทรกส่วนหัวเพิ่มเติมซึ่งจะถูกละเว้นโดยค่าเริ่มต้นสำหรับการเข้าถึงโดยปลั๊กอินเฉพาะ ตัวอย่างเช่น 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เพื่อให้แน่ใจว่าหน้าเอาต์พุตได้รับการอัปเดต
ในอุดมคติคุณควรจะสามารถโยกย้ายจากพงศาวดารก่อนหน้านี้โดยตรงไปยัง codebase นี้เนื่องจากวัตถุประสงค์และการดำเนินการหลักเหมือนกัน:
data/ เว้นแต่คุณจะระบุเส้นทางที่แตกต่างผ่าน " --input "*.txt เป็นรายการบล็อกเว้นแต่คุณจะระบุ " --pattern=*.blog "อย่างไรก็ตามมีการเปลี่ยนแปลงและสิ่งเหล่านี้ส่วนใหญ่เกี่ยวข้องกับเทมเพลตพร้อมกับความแตกต่างของการใช้งาน
ในฐานะที่เป็น Chronicle 5 สคริปต์หลักจะวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่งใด ๆ และอ่านโพสต์บล็อก แต่การสร้างเว็บไซต์ของคุณเป็นจริงโดยใช้ปลั๊กอินทั้งหมด ปลั๊กอินเป็นโมดูล Perl มาตรฐานที่อยู่ใต้ Chronicle::Plugin Name-Space และแม้ว่าคุณไม่จำเป็นต้องรู้รายละเอียดใด ๆ ที่พวกเขาสามารถสั่งซื้อได้ด้วยการใช้โมดูล :: Plugkable :: คลาสที่สั่งซื้อ
การเปลี่ยนแปลงเทมเพลตมีความสำคัญมากกว่าที่ฉันต้องการเล็กน้อย แต่การเปลี่ยนแปลงเหล่านี้อย่างมีความสุขส่วนใหญ่ประกอบด้วยสถานที่ใหม่สำหรับสิ่งต่าง ๆ และหน้าเพิ่มเติม
ดังที่ได้กล่าวถึงรหัสหลักนั้นค่อนข้างน้อยและฟังก์ชั่นเอาต์พุตทั้งหมดดำเนินการโดยปลั๊กอิน
แกนจะเรียกวิธีการต่อไปนี้หากมีอยู่ในปลั๊กอิน:
on_db_createon_db_openon_inserton_initiateon_generateon_initiate ยกเว้นว่าวิธีการปลั๊กอินเดิมได้รับการรับประกันว่าจะถูกเรียกก่อนที่จะถูกเรียกใช้ on_generate