[237] 노트의 상위 폴더를 내부 링크로 나열할 수 있도록 하는 옵시디언 스크립트 소개
페이지 정보
본문
제공된 코드 스니펫은 Obsidian의 Templater 플러그인과 Obsidian API를 사용하여 노트의 상위 폴더를 내부 링크로 나열할 수 있도록 합니다. 이는 노트 내에서 계층적 탐색을 생성하는 데 유용할 수 있습니다.
### 사전 준비 사항
1. **Templater 플러그인**: Templater 플러그인이 Obsidian Vault에 설치되고 활성화되어 있어야 합니다.
2. **JavaScript 실행**: Templater가 JavaScript 명령을 실행하도록 설정되어 있어야 하며, 이를 통해 Vault API에 접근할 수 있는 Obsidian `app` 변수가 노출됩니다.
### 폴더 구조 예시
다음과 같은 폴더 구조를 가정합니다:
- `Notes`
- `Inbox`
- `Test.md`
`Test.md`에 템플릿을 적용하면 루트 폴더까지의 상위 폴더를 내부 링크로 생성합니다(예: `[[Inbox]] | [[Notes]]`).
### 템플릿 코드
다음은 이를 구현하기 위한 코드 스니펫입니다:
<%*
// 현재 노트의 경로(vault 기준) 가져오기
const notePath = tp.file.path(true);
// 현재 노트에 대한 TAbstractFile 객체 가져오기
let tFile = this.app.vault.getAbstractFileByPath(notePath);
// 출력 문자열 초기화
tR = "Parents: ";
// 루트까지 상위 폴더 순회
while (!tFile.parent?.isRoot()) {
tR += "[[" + tFile.parent.name + "]] | ";
tFile = tFile.parent;
}
// 마지막 파이프와 공백 문자 제거
tR = tR.slice(0, -2);
_%>
### 작동 방식
1. **현재 노트 경로**: `tp.file.path(true)`를 사용하여 현재 노트의 경로를 가져옵니다.
2. **상위 폴더 순회**: `this.app.vault.getAbstractFileByPath()`를 통해 노트를 참조하고, 반복적으로 상위 폴더에 접근합니다.
3. **내부 링크 생성**: 각 상위 폴더마다 내부 링크(`[[폴더명]]`)를 문자열에 추가합니다.
4. **형식 정리**: 출력 결과에서 마지막 파이프(`|`)와 공백을 제거하여 깔끔하게 만듭니다.
### 출력 예시
`Test.md`에 적용했을 때, 노트에는 다음과 같은 텍스트가 생성됩니다:
```
Parents: [[Inbox]] | [[Notes]]
```
### 활용 사례
- **계층적 탐색**: 노트 내에서 상위 폴더에 빠르게 접근 가능.
- **맥락적 메타데이터**: 노트가 Vault 구조 내 어디에 위치하는지에 대한 정보를 추가.
이 스크립트는 Templater와 Obsidian API를 활용하여 메타데이터 생성을 자동화하고 탐색성을 향상시키는 방법을 보여줍니다.
인용:
[1] Templater plugin - Fork My Brainhttps://notes.nicolevanderhoeven.com/obsidian-playbook/Obsidian Plugins/Community Plugins/Templater plugin
[2] 5 Things the Obsidian Templater Plugin Can Do That Templates Can'thttps://nicolevanderhoeven.com/blog/20220131-5-things-the-obsidian-templater-can-do-that-templates-cant/
[3] Vault - Developer Documentationhttps://docs.obsidian.md/Reference/TypeScript API/Vault
[4] Vault - Developer Documentationhttps://docs.obsidian.md/Plugins/Vault
[5] Templater and Obsidian API: list parent folders as internal links in notehttps://forum.obsidian.md/t/templater-and-obsidian-api-list-parent-folders-as-internal-links-in-note/26349
[6] Obsidian Plugin: Templater - Create and use templates.https://obsidian-plugin-stats.vercel.app/plugins/templater-obsidian