สร้างหน้าเว็บไทม์ไลน์แบบคงที่เช่นไทม์ไลน์ Wikimedia ของฉันได้อย่างง่ายดาย ดูตัวอย่างไซต์ตัวอย่างนี้ที่ใช้งานกับ GitHub Pages: https://molly.github.io/static-timeline-generator/
สารบัญ
โคลนที่เก็บนี้ จากนั้นรัน npm install
จากไดเร็กทอรี
npm run-script serve
จะสร้างโปรเจ็กต์และให้บริการไฟล์คงที่ในเครื่องที่ http://localhost:8080 npm run-script build
เพียงแค่รันขั้นตอนการ build โดยไม่ต้องเริ่มเซิร์ฟเวอร์การพัฒนา
เนื้อหาเกือบทั้งหมดที่คุณต้องเปลี่ยนอยู่ใน src/_data/content.js
header
(HTML, ตัวเลือก): เนื้อหาที่จะแสดงในส่วนหัวที่ด้านบนของหน้าfooter
(HTML ไม่บังคับ): เนื้อหาที่จะแสดงในส่วนท้ายที่ด้านล่างของหน้าentries
(อาร์เรย์ของวัตถุ จำเป็น ): รายการรายการที่จะแสดงบนไทม์ไลน์ ตามลำดับที่ควรแสดงid
(สตริง, จำเป็น ): ID เฉพาะสำหรับรายการไทม์ไลน์นี้categories
(อาร์เรย์ของสตริง ไม่บังคับ): รายการหมวดหมู่ที่ใช้กับรายการนี้ สิ่งเหล่านี้จะแสดงเป็นช่องทำเครื่องหมายที่ด้านบนของหน้า และช่วยให้ผู้อ่านกรองไทม์ไลน์ได้ อาจไม่มีเครื่องหมายจุลภาค พวกเขาสามารถคั่นด้วยยติภังค์หรือช่องว่าง ( sample category
หรือ sample-category
จะแสดงบนหน้าเป็น Sample category
) รายการที่ไม่มีหมวดหมู่ใด ๆ จะถูกแสดงเสมอcolor
(สตริง ไม่บังคับ): สีของวงกลมที่แสดงบนไทม์ไลน์ ตัวเลือกที่กำหนดไว้แล้วคือ green
red
และ grey
คุณสามารถกำหนดสีเพิ่มเติมได้ใน css/custom.css
(ดูด้านล่าง)faicon
(สตริง ไม่บังคับ): ชื่อของไอคอน Font Awesome ที่จะใช้ในวงกลมบนไทม์ไลน์ สำรวจตัวเลือกต่างๆ นี่เป็นเพียงชื่อไอคอน (ไม่มีส่วนนำ fa-
) ตัวอย่างเช่น: anchor
.datetime
(ต้องมีสตริง datetime
หรือ date
): ตัวระบุวันที่และเวลาสำหรับรายการ ซึ่งอาจอยู่ในรูปแบบใดก็ได้ที่ moment.js
รู้จัก ปกติฉันจะใช้ "ปปปป-ดด-วว HH-SS" หากไม่มีเวลา มีเพียงวันที่ ให้ใช้พารามิเตอร์ date
แทน datetime
date
(ต้องมีสตริง datetime
หรือ date
): ตัวระบุวันที่สำหรับรายการ "ปปปป-ดด-วว"title
(HTML, required ): ชื่อเรื่องของรายการไทม์ไลน์image
(ไม่บังคับ): รูปภาพที่จะแสดงในรายการsrc
(จำเป็นต้องมีสตริง): URL โดยตรงไปยังไฟล์รูปภาพที่จะฝังบนเพจ หรือลิงก์ที่เกี่ยวข้องไปยังรูปภาพในไดเร็กทอรีนี้ (เช่น img/filename.png
)link
(สตริง ไม่บังคับ): ไฮเปอร์ลิงก์ไปยังหน้าที่มีรูปภาพ หากคุณต้องการให้ผู้อื่นสามารถคลิกเพื่อดูเวอร์ชันที่ใหญ่ขึ้นได้ เป็นต้นalt
(สตริง ไม่บังคับ): ข้อความแสดงแทนที่อธิบายรูปภาพcaption
(HTML, ตัวเลือก): คำบรรยายที่อธิบายรูปภาพbody
(HTML, required ): ข้อความของรายการไทม์ไลน์ หากคุณต้องการหลายย่อหน้า คุณต้องใส่แท็ก <p>
ด้วยตัวเอง มิฉะนั้นจะถูกเพิ่มเข้าไปlinks
(อาร์เรย์ของออบเจ็กต์ ไม่จำเป็น): อาร์เรย์ของลิงก์ที่จะแสดงที่ด้านล่างของรายการhref
(สตริง, จำเป็น ): เป้าหมายของลิงก์linkText
(HTML, จำเป็น ): ข้อความลิงก์extra
(HTML, ตัวเลือก): HTML พิเศษที่จะแสดงที่ส่วนท้ายของลิงก์pageTitle
(string, required ): ข้อความที่จะไปในแท็ก <title>
เพื่อตั้งชื่อหน้าในเบราว์เซอร์pageDescription
(สตริง ไม่บังคับ): คำอธิบายเพจเพื่อเข้าสู่เมตาแท็กpageAuthor
(string, optinal): ผู้เขียนเพจเพื่อเข้าสู่เมตาแท็ก หากคุณต้องการเพิ่มตัวเลือกสีให้กับวงกลมบนไทม์ไลน์ คุณสามารถแก้ไขไฟล์ src/css/custom.css
เพื่อเพิ่มสีของคุณเองได้ คุณสามารถใช้เครื่องมือนี้เพื่อเลือกสีและรับรหัสสีฐานสิบหกได้ พวกมันถูกกำหนดไว้ดังนี้:
. timeline-icon . yourcolorhere {
background-color : # hexcol or code;
}
จากนั้นคุณจะใช้ color: yourcolorhere
ในไฟล์ content.js
แทนที่รูปภาพในโฟลเดอร์ src/img
เพื่อปรับแต่ง favicon ของหน้าและรูปภาพ OpenGraph
เมื่อคุณเรียกใช้ npm run-script buld
คุณจะเห็นไดเร็กทอรี _site
ที่มีไฟล์ HTML/CSS/JS แบบคงที่พร้อมกับเนื้อหาไซต์ของคุณ ตอนนี้คุณสามารถใช้โฮสติ้งไซต์แบบคงที่เพื่อปรับใช้ไฟล์เหล่านี้ได้!
หากต้องการปรับใช้ไซต์แบบคงที่บนหน้า GitHub (ฟรี) ให้สร้างสาขาที่มีไฟล์แบบคงที่ในไดเร็กทอรีรากโดยการรัน git subtree push --prefix _site origin gh-pages
จากนั้น คุณสามารถไปที่การตั้งค่า > ตัวเลือกเพจของพื้นที่เก็บข้อมูลของคุณ และเลือก "ปรับใช้จากสาขา" จากนั้นเลือก gh-pages
เป็นสาขา
มีบทช่วยสอนดีๆ สำหรับการปรับใช้ไซต์แบบคงที่กับบริการฟรีอื่นๆ มากมาย บางส่วนอยู่ด้านล่าง
คุณยังสามารถมองหาบทช่วยสอนเกี่ยวกับวิธีการปรับใช้ไซต์ที่สร้างด้วยสิบเอ็ดสิบ เนื่องจากนั่นคือสิ่งที่ขับเคลื่อนโปรเจ็กต์นี้ บริการเว็บโฮสติ้งบางอย่างเช่น Vercel รองรับสิบเอ็ดสิบโดยเฉพาะในรูปแบบที่มีประโยชน์จริงๆ
npm run-script build
_site
ไทม์ไลน์จะแสดงผลได้ดีบนแท็บเล็ต:
หรืออุปกรณ์เคลื่อนที่:
สิ่งนี้น่าจะทำงานได้ดีกับเบราว์เซอร์รุ่นใหม่ทั้งหมด ไม่รองรับ IE <9
หากไม่เปิดใช้งาน JavaScript หน้าจะลดลงอย่างสวยงาม อย่างไรก็ตาม โพสต์จะแสดงในไทม์ไลน์แบบคอลัมน์เดียวและตัวกรองจะไม่แสดง
โครงการนี้ใช้
เผยแพร่ภายใต้ใบอนุญาต MIT