Front matter(頁面中繼資料)
Front matter 是寫在 Markdown 檔案最上方、用 --- 包起來的 YAML 中繼資料。它會在內容交給 Markdown 解析之前先被移除,可以用來針對單一頁面調整行為。
本教學的每一頁都有用到,例如:
頁面標題與描述
title 會覆寫導覽與 <title> 標籤裡的頁面標題;description 會加到 HTML head 的 meta 標籤,搜尋引擎會用它作為摘要:
頁面圖示
icon 會顯示在導覽列該頁的旁邊,必須是內建圖示集裡的圖示:
圖示的寫法與可用的圖示集,見 圖示。
頁面狀態(Status)
可以替頁面標上狀態,並顯示在導覽側邊欄。先在 zensical.toml 把「識別字」對應到說明文字(識別字只能包含英數字、連字號、底線):
再到頁面 front matter 指定:
new 與 deprecated 兩個識別字已經有預設樣式。自訂狀態若要換圖示,需要在 extra.css 設定。
自訂模板
template 讓單一頁面改用另一個模板,取代預設的 main.html。模板檔必須放在 overrides/ 資料夾(見 網站客製化):
隱藏頁面元素(hide)
| 值 | 隱藏的元素 |
|---|---|
navigation |
左側導覽 |
toc |
右側目錄 |
path |
麵包屑導覽 |
footer |
上一頁/下一頁連結 |
feedback |
「這一頁對您有幫助嗎?」評分元件 |
tags |
頁面標籤 |
其他常用的 front matter
這些功能各有專頁說明:
| 屬性 | 用途 | 詳見 |
|---|---|---|
tags |
替頁面加標籤 | 標籤 |
search.exclude |
讓頁面不進入搜尋索引 | 搜尋 |
comments |
在頁面底部顯示留言系統 | 留言系統 |
自訂欄位
front matter 可以放任意欄位,再在模板裡用 page.meta 取用。例如,想控制單頁要不要被搜尋引擎索引:
在 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 |
隱藏 navigation/toc/path/footer/feedback/tags |
tags、search、comments |
標籤、搜尋、留言 |