// 01
內容模型
- 「Lect」結構化內容 — 每個頁面的主體都是一份具明確結構的 JSON:localized 欄位、scalar attribute(
@)、page-reference pointer(*)、可重複的 items、可重用的 blocks(_blocks)及 tags(_tags)。_type、_modifier、_pointers等 metadata 亦並列其中。 - Blueprint 驅動的 schema — 頁面類型以 blueprint 宣告(欄位字串與巢狀 item map 的組合);編輯器表單、搜尋路徑及 CSV header 全部由同一 blueprint 衍生。
- 內建多語支援 — 預設語言集(
mis、en、zh-hant、zh-hans),每個欄位都有 localized 值;語言按 request 選擇,並貫穿儲存/重載。Languages 後台可管理 locales、fallback 次序及 content/UI 啟用狀態;Translations 則儲存每個 locale 的 UI overrides,而完整 admin shell 和 profile language selector 亦會使用這些執行時翻譯。 - 21 種欄位類型,由 Liquid snippet 渲染:
text、textarea、richtext、number、boolean、switch、checkbox、radio、select、date、time、color、email、tel、url、link、page(page-reference combobox)、picture、file(私有媒體上載)、range(附標籤的離散量表)及rating(可用鍵盤操作的星級)。 - Markdown rich-text 模式 —
richtext/md欄位會同步 visual rich-text surface、Markdown source 和提交的 HTML。它現已是 page 與 block 的預設 body 欄位,附有已翻譯的 mode controls,並可還原 legacy double-escaped HTML。 - 支援翻譯的欄位 chrome — 共用的
text、email、number、textarea、picture、select及switchsnippet 可從 i18n key 取得 label、placeholder、blank label 和 select option,同時為現有 blueprint 保留純文字 fallback。 - Page-reference 欄位 — 由 JSON API 支援的可搜尋 combobox,把一個頁面連結到另一個(按類型,以 name/slug 篩選)。
- 頁面層級 — 頁面可設定 parent(
page_id)形成樹狀結構;parent 選項可搜尋。 - 排程視窗與時區 — 每個頁面帶可選的
start/end時間戳及時區(UTC offset 或 IANA 名稱;預設可經DEFAULT_TIMEZONE設定)。 - Weight 排序 — 每頁可手動設定排序 weight,支援即時編輯及批量端點;client-rendered item group 亦設有拖曳手柄,儲存前會更新原有的 weight input。
- 舊格式正規化 — 較舊的「structured」JSON 形態會在讀取時自動遷移到現行 lect 模型。
- Lect 合併語意 — blueprint 預設 ← 已存內容 ← 傳入的部分內容,因此 API 呼叫方及匯入工具只需送出有改動的欄位。