层级属性:page-type 继承 icon 和属性值
为什么要继承属性
假设你有 50 本书的笔记页面,每个都要手动设 icon:: 📚。如果后来想把图标改成 📖,需要改 50 次。
层级属性解决这个问题:定义一个 page-type:: book 类型,给它设默认 icon,所有标记了这个类型的页面自动继承——一处修改,全局生效。
设置步骤
第一步:创建类型页面
创建一个页面叫「book」(或任何你喜欢的名字),在里面写好默认属性:
icon:: 📚
page-type-icon:: true
page-type-icon:: true 告诉 Logseq:这个类型页面里的 icon 属性应该作为所有 page-type:: book 页面的默认图标。
第二步:在书的页面里标记类型
每本书的页面里加一行:
page-type:: book
title:: 《深度工作》
这样这本《深度工作》的页面会自动继承 📚 图标。
第三步:修改类型
如果以后想把所有书的图标改成 📖,只需去「book」页面把 icon:: 📚 改成 icon:: 📖——所有标记了 page-type:: book 的页面自动更新。
继承规则
- 本地优先:如果某个页面显式设置了
icon:: 📖,那它不会被类型的icon:: 📚覆盖——本地设置优先级更高 - 多类型:一个页面可以有多个
page-type::,按声明顺序依次继承(后面的可以覆盖前面的) - 内置也可用:Logseq 内置了一些 page-type 的默认值(比如
journals类型),你可以覆盖
除了 icon 还能继承什么
理论上任何属性都可以通过 page-type 继承,不仅仅是 icon。比如:
# project 类型页面
icon:: 📁
page-type-icon:: true
status:: planning
default-status:: planning
然后所有 page-type:: project 的页面都会有 status:: planning 作为默认值。
其他 page-type 场景
| page-type 值 | 用途 | 可继承 |
|---|---|---|
book | 书籍笔记 | icon、default-status、progress |
paper | 论文笔记 | icon、citation-format |
project | 项目页面 | icon、default-status、owner |
person | 人物页面 | icon、role |
meeting | 会议记录 | icon、participants-format |
与 namespace 的区别
- namespace(命名空间,用
/)— 解决「页面放哪」的问题,提供物理分组 - page-type — 解决「页面是什么」的问题,提供属性继承
一个页面可以同时有 namespace 和 page-type:
- 文件路径:
notes/papers/transformer.md(namespace:notes/papers) - 页面属性:
page-type:: paper(继承 paper 类型的 icon 等)
两者独立、互不干扰。