Skip to content

属性系统

概述

Obsidian 属性(Properties)是添加到笔记顶部的结构化元数据,用于:

  • 分类组织:为笔记添加标签、类型等
  • 数据管理:记录日期、状态、作者等信息
  • 查询筛选:结合 Dataview 进行高级查询
  • 模板自动化:配合 Templater 自动填充

YAML Frontmatter

基本语法

YAML Frontmatter 放在笔记最开头,用 --- 包围:

yaml
---
title: 笔记标题
date: 2024-01-15
tags: [项目, 重要]
status: 进行中
---

# 正文内容

这里是笔记的正文...

数据类型

类型语法示例说明
文本title: 我的笔记纯文本字符串
数字priority: 5整数或小数
布尔published: truetrue/false
日期date: 2024-01-15YYYY-MM-DD 格式
日期时间created: 2024-01-15T10:30:00ISO 8601 格式
列表tags: [工作, 重要]数组
别名列表aliases: [别名1, 别名2]特殊的别名属性
链接project: "[[项目A]]"内部链接

属性界面

Obsidian 提供可视化的属性编辑界面:

  1. 点击笔记顶部的属性区域
  2. 或使用命令面板搜索「添加属性」
  3. 在弹出的界面中编辑

内置属性

常用内置属性

属性说明示例
title笔记标题title: 我的笔记
aliases别名(用于搜索和链接)aliases: [别名1, 别名2]
tags标签tags: [工作, 重要]
cssclass自定义 CSS 类cssclass: wide-page
publish发布控制publish: false
permalink永久链接permalink: notes/my-note

标签属性

yaml
# 单个标签
tags: 工作

# 多个标签(行内)
tags: [工作, 重要, 项目]

# 多个标签(多行)
tags:
  - 工作
  - 重要
  - 项目

# 嵌套标签
tags:
  - 项目/进行中
  - 类型/笔记

别名属性

yaml
aliases:
  - 简称
  - 英文名
  - 缩写

别名用于:

  • 搜索时匹配
  • 链接时自动补全
  • 重定向链接

自定义属性

笔记元数据

yaml
---
title: 产品需求文档
created: 2024-01-15
modified: 2024-01-20
author: 张三
version: 1.2
---

项目管理

yaml
---
project: "[[新产品开发]]"
status: 进行中
priority: 
start_date: 2024-01-01
end_date: 2024-03-31
progress: 60%
assigned_to:
  - "[[张三]]"
  - "[[李四]]"
---

阅读笔记

yaml
---
type: 阅读笔记
book: 《深度工作》
author: Cal Newport
rating: 5
read_date: 2024-01-15
status: 已读
tags: [生产力, 方法论]
---

会议记录

yaml
---
type: 会议记录
date: 2024-01-15
time: 14:00
duration: 60
location: 会议室A
attendees:
  - 张三
  - 李四
  - 王五
agenda:
  - 项目进度汇报
  - 下阶段计划
follow_up: true
---

属性与 Dataview

查询属性

使用 Dataview 查询笔记属性:

dataview
TABLE 
  title as "标题",
  status as "状态",
  priority as "优先级"
FROM "projects"
WHERE status = "进行中"
SORT priority DESC

按属性筛选

dataview
LIST
FROM ""
WHERE type = "阅读笔记" AND rating >= 4
SORT read_date DESC

聚合统计

dataview
TABLE 
  length(rows) as "数量"
FROM ""
GROUP BY status

属性计算

dataview
TABLE
  end_date - start_date as "项目周期"
FROM "projects"
WHERE start_date AND end_date

属性与模板

Templater 示例

markdown
---
title: <% tp.file.title %>
created: <% tp.date.now("YYYY-MM-DD") %>
modified: <% tp.date.now("YYYY-MM-DD") %>
tags: []
type: 
status: 
---

<% tp.file.cursor() %>

自动填充属性

javascript
<%*
// 自动生成 ID
tR += `id: ${tp.date.now("YYYYMMDDHHmmss")}\n`;

// 从文件名提取信息
const fileName = tp.file.title;
const parts = fileName.split(" - ");
if (parts.length > 1) {
  tR += `project: ${parts[0]}\n`;
  tR += `task: ${parts[1]}\n`;
}
%>

属性最佳实践

命名规范

yaml
推荐做法:
  使用小写: status, not Status
  使用下划线: start_date, not start-date
  保持简洁: type, not document_type
  语义明确: created_at, not date

属性类型选择

场景推荐类型示例
分类文本/列表type: meeting
状态文本status: 进行中
优先级数字/文本priority: 5
关联链接project: "[[项目A]]"
日期日期created: 2024-01-15
开关布尔published: false

属性复用

为保持一致性,建议创建属性模板:

yaml
# 所有笔记共有
title: 
created: 
modified: 
tags: []

# 项目笔记
project: 
status: 
priority: 
due_date: 

# 阅读笔记
type: reading
book: 
author: 
rating:

属性管理

查看所有属性

  1. 打开命令面板
  2. 搜索「显示所有属性」
  3. 查看仓库中使用的所有属性

属性面板

在侧边栏显示当前笔记的属性:

  1. 打开命令面板
  2. 搜索「显示属性面板」

批量编辑

使用 Dataview 查询后批量修改:

dataview
TABLE status, priority
FROM "projects"
WHERE status = "进行中"

然后使用「批量编辑」插件修改。

高级用法

条件渲染

使用 CSS 类控制内容显示:

yaml
---
cssclass: hide-completed
---
css
/* 隐藏已完成任务 */
.hide-completed .task-list-item.is-checked {
  display: none;
}

发布控制

使用 publish 属性控制 Obsidian Publish:

yaml
---
publish: false
---

或指定发布内容:

yaml
---
publish: true
publishDate: 2024-01-15
---

链接属性

属性值可以是链接:

yaml
---
related_to:
  - "[[项目A]]"
  - "[[会议记录]]"
parent: "[[父级笔记]]"
---

计算属性

结合 Dataview Inline 查询:

markdown
---
project_start: 2024-01-01
project_end: 2024-03-31
---

项目周期: `= this.project_end - this.project_start`

属性插件

推荐插件

插件名称功能描述
Dataview属性查询和展示
Templater自动填充属性
Properties增强属性编辑
Metadata Menu高级元数据管理
Supercharged Links根据属性样式化链接

Metadata Menu

提供高级属性管理:

  • 属性自动补全
  • 属性验证
  • 下拉选项
  • 文件夹默认属性

常见问题

属性不显示?

  1. 确保 YAML 格式正确
  2. 检查缩进是否一致(使用空格)
  3. 确保使用 --- 分隔

属性值包含特殊字符?

使用引号包围:

yaml
title: "标题: 包含冒号"
description: '包含 "引号" 的描述'

如何修改属性显示顺序?

在属性界面中拖拽调整顺序,或直接编辑 YAML。

属性太多怎么管理?

  1. 使用属性分组
  2. 创建不同类型的模板
  3. 使用文件夹默认属性

下一步

最后更新:2026年2月28日编辑此页反馈问题