跳轉至

Front matter(頁面中繼資料)

Front matter 是寫在 Markdown 檔案最上方、用 --- 包起來的 YAML 中繼資料。它會在內容交給 Markdown 解析之前先被移除,可以用來針對單一頁面調整行為。

本教學的每一頁都有用到,例如:

---
icon: material/rocket-launch
---

頁面標題與描述

title 會覆寫導覽與 <title> 標籤裡的頁面標題;description 會加到 HTML head 的 meta 標籤,搜尋引擎會用它作為摘要:

---
title: 安裝與設定
description: 說明如何安裝 Zensical 並建立第一個專案。
---

# 頁面標題

頁面圖示

icon 會顯示在導覽列該頁的旁邊,必須是內建圖示集裡的圖示:

---
icon: lucide/braces
---

圖示的寫法與可用的圖示集,見 圖示

頁面狀態(Status)

可以替頁面標上狀態,並顯示在導覽側邊欄。先在 zensical.toml 把「識別字」對應到說明文字(識別字只能包含英數字、連字號、底線):

[project.extra.status]
new = "最近新增"
deprecated = "已棄用"

再到頁面 front matter 指定:

---
status: new
---

newdeprecated 兩個識別字已經有預設樣式。自訂狀態若要換圖示,需要在 extra.css 設定。

自訂模板

template 讓單一頁面改用另一個模板,取代預設的 main.html。模板檔必須放在 overrides/ 資料夾(見 網站客製化):

---
template: my_homepage.html
---

隱藏頁面元素(hide

---
hide:
  - navigation
  - toc
---
隱藏的元素
navigation 左側導覽
toc 右側目錄
path 麵包屑導覽
footer 上一頁/下一頁連結
feedback 「這一頁對您有幫助嗎?」評分元件
tags 頁面標籤

其他常用的 front matter

這些功能各有專頁說明:

屬性 用途 詳見
tags 替頁面加標籤 標籤
search.exclude 讓頁面不進入搜尋索引 搜尋
comments 在頁面底部顯示留言系統 留言系統

自訂欄位

front matter 可以放任意欄位,再在模板裡用 page.meta 取用。例如,想控制單頁要不要被搜尋引擎索引:

---
robots: noindex, nofollow
---

overrides/main.html 裡覆寫 extrahead 區塊:

{% extends "base.html" %}

{% block extrahead %}
  {% if page and page.meta and page.meta.robots %}
    <meta name="robots" content="{{ page.meta.robots }}" />
  {% else %}
    <meta name="robots" content="index, follow" />
  {% endif %}
{% endblock %}

記得要有 else 分支,提供沒有設定時的預設值。

集中管理中繼資料

如果很多頁要套用相同的中繼資料,可以用 meta 外掛,把中繼資料寫在 meta.yml 檔案,而不必在每一頁重複。

總結

屬性 作用
title / description 頁面標題、SEO 描述
icon 導覽圖示
status 導覽上的狀態標記
template 使用自訂模板
hide 隱藏 navigationtocpathfooterfeedbacktags
tagssearchcomments 標籤、搜尋、留言

參考資料