MASTER Obsidian's Powerful METADATA MENU Plugin - Step by Step

Lean Productivity
20 Dec 202339:35

Summary

TLDRThis video script offers an in-depth tutorial on the 'Metadata Menu' plugin for Obsidian, guiding users through its powerful features for managing note metadata. It covers plugin setup, field types, file classes, and practical demonstrations. The script details the process of creating a new vault, installing plugins, and customizing settings for optimal use. It also explores creating classes for different note types, leveraging lookups for dynamic field values, and integrating with the Obsidian Canvas for a visual workflow. The aim is to enhance frontmatter consistency and efficiency in note organization.

Takeaways

  • 📚 The 'Metadata Menu' plugin for Obsidian is a powerful tool for managing note metadata, offering a range of functionalities including context menu items for modifying front-matter and inline fields.
  • 🛠️ The plugin requires initial setup, including installing both the 'Metadata Menu' and 'Dataview' plugins, and configuring settings to ensure proper functionality.
  • 🔍 The 'Metadata Menu' provides options for field indexing, context menu customization, and various exclusions to tailor the plugin to the user's needs.
  • 📝 It supports 18 different field types, each with specific settings that allow for a high degree of customization in how notes are organized and interacted with.
  • 🔗 The plugin works with 'fileClasses', which are used to define default fields and settings for different types of notes, enhancing consistency across various note types.
  • 📑 File classes can be organized hierarchically, allowing for inheritance of fields and settings from parent classes to child classes.
  • 🔄 The plugin includes the ability to create fields that update automatically based on the note's position on the Obsidian Canvas, synchronizing visual organization with metadata.
  • 🔑 Auto-completion is available for fields, providing a list of existing values to choose from, which can improve frontmatter consistency.
  • 📈 The 'Metadata Menu' plugin can define preset types and values for fields, streamlining the process of adding consistent metadata across multiple notes.
  • 🎨 The plugin allows for customization of the context menu, including the option to show all available field options or summarize them under a single menu item.
  • 🔍 Users can define global presets for certain fields, and even set up lookup queries to dynamically populate field values from other notes or sources.

Q & A

  • What is the 'Metadata Menu' plugin and what does it do?

    -The 'Metadata Menu' plugin for Obsidian is a powerful tool that provides context menu items for notes to modify front-matter and inline fields. It allows users to define preset types and values and offers auto-completion for higher frontmatter consistency.

  • How can the 'Metadata Menu' plugin be installed in a new vault?

    -To install the 'Metadata Menu' plugin, navigate to 'Settings', then 'Community plugins', and turn off the restricted mode. Click on 'Browse', search for the 'Metadata Menu' plugin, and click 'Install' and 'Enable'. You will also need to install the 'Dataview' plugin as it is a dependency.

  • What are the initial steps to configure the 'Metadata Menu' plugin?

    -After installing the 'Metadata Menu' and 'Dataview' plugins, you need to enable JavaScript execution in the 'Dataview' settings. Then, in the 'Metadata Menu' settings, you can define indexing preferences, context menu options, and various exclusions.

  • What are 'file classes' in the context of the 'Metadata Menu' plugin?

    -'File classes' in the 'Metadata Menu' plugin are used for defining default fields, options, and field settings per class. They help in organizing notes based on their types, such as articles, book summaries, projects, etc.

  • How can you define a new field in the 'Metadata Menu' plugin?

    -You can define a new field in the 'Metadata Menu' plugin by going to the plugin settings or via a 'file class note'. Each field is defined by a name, a type, and type-specific options.

  • What is the purpose of the 'Dataview' plugin in relation to 'Metadata Menu'?

    -The 'Dataview' plugin is a dependency for the 'Metadata Menu' plugin. It enables functionalities like lookup queries, which can be used to dynamically populate fields based on queries that return specific data from your notes.

  • How does the plugin handle different field types such as dates, numbers, and links?

    -The plugin supports various field types, each with specific options. For dates, it allows date picking and formatting; for numbers, it provides step increments and range limits; and for links, it enables single or multiple document links with options for aliases and sorting.

  • What is the advantage of using 'lookups' for defining field values?

    -Using 'lookups' for defining field values allows for a more dynamic and maintainable way of managing options for fields. Changes made in the lookup note are automatically reflected across all notes using that lookup, eliminating the need to manually update each instance.

  • How can the 'Metadata Menu' plugin be combined with the Obsidian Canvas?

    -The 'Metadata Menu' plugin can be combined with the Obsidian Canvas to manage notes and their metadata visually. By dragging notes around on the canvas, their 'cPhase' and 'cStatus' fields can be updated, reflecting the workflow and progress.

  • What are the steps to update a note's frontmatter based on its position in the Obsidian Canvas?

    -To update a note's frontmatter based on its position in the Canvas, you need to define fields with the type 'updates with groups in canvas' or 'updates with links in canvas'. Then, map these fields to specific canvas groups or links, and move the notes to the desired positions to trigger the updates.

  • How can you create a class hierarchy in the 'Metadata Menu' plugin?

    -You can create a class hierarchy by defining a parent class for a new class. The child class will inherit fields from the parent class, and you can add or exclude specific fields as needed. This helps in maintaining consistency across different types of notes.

Outlines

00:00

📗 Introduction to the 'Metadata Menu' Plugin

This paragraph introduces the 'Metadata Menu' plugin for Obsidian, highlighting its powerful capabilities and the extensive information covered in the video. The speaker outlines the structure of the video, which includes an overview, setup instructions, basics of field types and settings, file classes explanation, and practical demonstrations. The importance of installing both the 'Metadata Menu' and 'Dataview' plugins is emphasized, along with initial setup steps such as turning off restricted mode, browsing for plugins, and enabling JavaScript execution for proper functionality.

05:01

🔧 Configuring 'Metadata Menu' Settings and Field Types

The speaker delves into the configuration settings of the 'Metadata Menu' plugin, explaining options for indexing fields, customizing the context menu, and setting up exclusions. Auto-completion and field indexing status display are discussed, along with global presets for fields. The paragraph also covers the creation of a 'Classes' folder for organizing vault components and setting up a 'fileClass' field with global fileClass settings. The variety of field types supported by the plugin is introduced, with demonstrations of creating fields like input, list single, list multiple, cycle value list, and checkbox fields.

10:01

📝 Exploring Advanced Field Types and Their Applications

This section continues the exploration of field types, showcasing link fields for single and multiple documents, date fields with formatting and navigation options, and number fields with step increments. The paragraph also introduces a lookup query field, a formula field for calculations, and canvas-related fields. The speaker creates a 'Demo' class file to demonstrate adding various field types, including object fields for organizing complex data like meeting participants with attributes and logistics details.

15:03

🌐 Practical Demonstration of Field Types in Action

The speaker provides a practical demonstration of the field types in a new note called 'Field Demo'. The process of adding fields to the frontmatter through the class association and the functionality of each field type, such as input fields, date pickers, link fields, and object lists, are shown. The dynamic nature of fields, like the formula field updating based on number field changes, is also highlighted. The paragraph concludes with a look at how to manually add fields and values in source view versus using the reading view for easier input.

20:05

🔄 Setup and Utilization of Lookup Queries for Field Values

The paragraph explains how to set up a lookup query for a field, using a specific example where pages with the 'article' tag are queried. The importance of having a 'parent' field in target notes for the lookup to work is emphasized. The speaker demonstrates adding a 'parent' field to 'LookupDemo1' and 'LookupDemo2' notes and shows how the lookup query field in the 'Field Demo' note populates with these notes once linked.

25:06

📑 Understanding File Classes and Their Structure

The concept of 'file classes' in the 'Metadata Menu' plugin is explained, detailing how they are used to define default fields and options for different types of notes. The speaker guides through creating a general 'All' class for common fields applicable to all notes and setting it as the global file class. The process of creating subclasses, like 'Project', and inheriting fields from parent classes is also covered. The paragraph concludes with a discussion on using Dataview queries to dynamically populate list fields in classes.

30:06

🎨 Customizing Classes and Implementing Class Hierarchies

This paragraph focuses on customizing classes by adding specific fields, such as 'phase', 'status', and 'priority' for a 'Project' class. The speaker also demonstrates creating a subclass 'Article' under 'Project', inheriting and excluding fields as needed. The use of 'lookups' for maintaining list field values is introduced, with a practical example of creating a 'project phase' lookup note. The benefits of this approach for maintaining consistency and minimizing administrative effort are highlighted.

35:08

🖼️ Integrating 'Metadata Menu' with Obsidian Canvas for Workflow Visualization

The speaker discusses the integration of the 'Metadata Menu' plugin with the Obsidian Canvas, describing how to set up a canvas to visualize and manage the workflow of articles. The process of defining swim lanes for different phases and statuses, and preparing the 'article' class with new fields 'cPhase' and 'cStatus' is explained. The functionality of updating note frontmatter based on their position in the canvas groups is demonstrated, showcasing how moving notes updates their phase and status.

🔗 Updating Frontmatter with Canvas Links and Concluding the Deep Dive

The final paragraph covers the creation of fields that update based on links made between notes on the canvas, such as 'previous chapter' and 'next chapter'. The speaker shows how drawing arrows between articles on the canvas updates these fields, reflecting the sequence of the articles. The paragraph concludes the deep dive into the 'Metadata Menu' plugin, inviting feedback and suggestions for future video topics.

Mindmap

Keywords

💡Metadata Menu Plugin

The 'Metadata Menu' plugin is a powerful tool in Obsidian that allows users to modify front-matter and inline fields with context menu items. It is central to the video's theme as it is the main subject being discussed and demonstrated. The script mentions its capabilities such as defining preset types and values, and providing auto-completion for frontmatter consistency.

💡Frontmatter

Frontmatter in the context of the video refers to the block of metadata at the beginning of a note in Obsidian. It is a key concept because the Metadata Menu plugin interacts with this section to add and modify fields. The script discusses how the plugin can be used to streamline the process of adding and managing frontmatter.

💡Field Types

Field types are the different kinds of data inputs that can be included in the frontmatter of a note. The script explains that the Metadata Menu plugin supports 18 different field types, each with its own specific options and uses, which is crucial for customizing the metadata structure of notes.

💡File Classes

File classes in the video are a way to categorize and manage notes with specific metadata settings in Obsidian. They are a core concept because they allow for the grouping of notes and the application of consistent metadata structures, as demonstrated when creating a 'Project' class and an 'Article' subclass.

💡Dataview Plugin

The Dataview plugin is a companion to the Metadata Menu plugin and is required for its full functionality. It is mentioned in the script as a necessary step in the setup process, highlighting its importance in enabling certain features of the Metadata Menu plugin.

💡Auto-completion

Auto-completion is a feature of the Metadata Menu plugin that suggests existing values when entering data into the frontmatter. It is an important aspect of the plugin's functionality, as it helps maintain consistency and efficiency in data entry, as discussed in the script.

💡Inheritance

In the context of the video, inheritance refers to how subclasses in the file class hierarchy can inherit fields from their parent classes. This is demonstrated when creating the 'article' class, which inherits fields from the 'project' and 'All' classes, streamlining the process of setting up new classes.

💡Canvas

The Canvas in Obsidian is a core plugin that allows for visual organization and workflow management. The script describes how the Metadata Menu plugin can be combined with the Canvas to update note metadata based on the position of notes within the canvas, creating a dynamic and interactive note management system.

💡Lookups

Lookups are a method of defining values for list fields in the Metadata Menu plugin by referencing notes that contain the value lists. The script explains how to use lookups to maintain and update list field values in a more manageable way, such as using a 'project phase' lookup note.

💡Swim Lanes

Swim lanes in the context of the Canvas plugin are sections that represent different stages or categories of work. The script describes creating swim lanes for statuses and phases, which are used to visually organize notes and update their metadata based on their position within these lanes.

💡Templates

Templates in Obsidian are pre-defined structures for notes that can include specific frontmatter and content. Although not explicitly detailed in the script, they are implied as a tool for maintaining consistency in notes, especially when used in conjunction with the Metadata Menu plugin and file classes.

Highlights

The 'Metadata Menu' plugin for Obsidian offers powerful features for managing note metadata.

The video provides an in-depth tutorial on using the 'Metadata Menu' plugin, including setup and practical demonstrations.

To get started with the plugin, users must disable restricted mode and install both 'Metadata Menu' and 'Dataview' plugins.

Settings allow customization of indexing scope and context menu display options for better performance and user experience.

Auto-completion for frontmatter fields enhances consistency and ease of use within notes.

The plugin supports 18 different field types, each with specific options and capabilities.

Field types include input fields, list selections, checkboxes, number fields, link fields, and date fields, among others.

Users can define global presets for certain fields to maintain consistency across multiple notes.

The 'fileClass' feature organizes notes by types, applying specific fields and settings to each class.

Creating a class hierarchy allows for inheriting fields from parent classes to streamline note organization.

The 'Metadata Menu' plugin integrates with Obsidian's Canvas plugin to visually manage and update notes' metadata.

Swim lanes on the canvas represent different phases and statuses, updating notes' frontmatter when moved.

The tutorial demonstrates creating a workflow for managing articles or blog posts using the plugin's capabilities.

Lookup queries can dynamically populate fields from a note, simplifying maintenance of list fields.

Object fields allow for complex data structures, such as tracking participants in a meeting with roles and companies.

The video concludes with practical demonstrations of the plugin's features in action, showcasing its capabilities for note management.

The 'Metadata Menu' plugin enhances Obsidian's functionality, providing a robust system for metadata management and workflow visualization.

Transcripts

play00:12

The "Metadata Menu"

play00:13

plugin is quite powerful,

play00:15

so this video contains

play00:16

a lot of information.

play00:18

To make it easier for you, I added more

play00:19

chapters than usual.

play00:21

Depending on what you're interested in,

play00:22

you should be able to

play00:23

easily jump around between them.

play00:25

Having said that, if you

play00:27

don't know the plugin at all,

play00:29

I suggest watching the chapters in order.

play00:31

I structured them to

play00:32

cover five main parts.

play00:35

First, an overview.

play00:36

What does the plugin actually do?

play00:38

Second, the setup.

play00:40

This covers plugin

play00:41

installation and settings.

play00:43

Third, some basics.

play00:45

Here, we learn about

play00:46

the available field types

play00:47

and their settings.

play00:49

Fourth, the file classes.

play00:51

The plugin works with

play00:52

so-called "fileClasses",

play00:53

and here we explore what

play00:54

they are and what they do.

play00:56

And fifth, practical demos.

play00:59

This is where we put

play01:00

all of the above together.

play01:01

I prepared a few showcases

play01:02

to illustrate the plugin's

play01:04

capabilities on its

play01:05

own and in combination

play01:07

with the Obsidian canvas.

play01:09

As each of these parts

play01:10

has various chapters,

play01:11

you may want to grab a

play01:12

snack and a beverage.

play01:14

This is going to be a long ride.

play01:17

In the official

play01:17

documentation, the link to which

play01:19

I left in the description, it says

play01:21

that the plugin gives us

play01:22

context menu items for notes

play01:24

to modify front-matter and inline fields.

play01:27

It can define preset types and values,

play01:30

and we get auto-completion for higher

play01:32

frontmatter consistency.

play01:34

Sounds great.

play01:35

But there are a few things we need

play01:36

to do before we can

play01:38

reap all these benefits.

play01:40

For this video, I will

play01:42

use a completely new vault

play01:43

so you can see what you

play01:44

need exactly to make this work.

play01:47

After creating a new vault,

play01:48

we have to go to "Settings",

play01:49

navigate to "Community plugins", and turn

play01:51

off the restricted mode.

play01:53

This allows us to

play01:54

install community plugins

play01:55

by clicking on "Browse", searching for the

play01:58

"Metadata Menu" plugin,

play01:59

and clicking "Install" and "Enable".

play02:03

Right away, we get information message

play02:05

that we also need to

play02:06

install the "Dataview" plugin.

play02:08

So we just repeat these

play02:09

steps, searching for it,

play02:11

installing, and

play02:12

enabling it in the same way.

play02:14

Before we go to the

play02:15

"Metadata Menu" settings,

play02:17

we need to check those

play02:18

of the "Dataview" plugin.

play02:19

In order to work properly, we need

play02:21

to enable the second and third option

play02:23

to allow the execution

play02:24

of JavaScript and inline

play02:26

JavaScript queries.

play02:28

With that done, we can move on to the

play02:30

"Metadata Menu" settings.

play02:32

The first option is to

play02:33

define whether the plugin shall

play02:35

index only fields in the frontmatter

play02:37

or also inline fields

play02:39

anywhere in our notes.

play02:41

By default, this is set to full note,

play02:43

but this could have a

play02:44

negative performance impact.

play02:46

So if you experience those, you might

play02:48

want to change it to frontmatter only.

play02:51

Then we can choose whether

play02:52

or not a note's context menu

play02:54

shall show all the

play02:55

available field options

play02:56

or, to keep the context menu shorter,

play02:59

to summarize them under a single menu

play03:01

item called "Field Options".

play03:04

Let me quickly jump over to my main vault

play03:05

and show you the difference.

play03:07

I currently have this option turned off.

play03:09

So when I right-click on

play03:10

a note, the context menu

play03:12

will show me the "field options" entry.

play03:14

And after clicking it, I get

play03:16

a list of available options.

play03:19

If I turn the option on and

play03:20

right-click on the same note,

play03:22

the context menu will include

play03:23

all these options right away.

play03:26

This makes it longer, but

play03:27

also saves you one click.

play03:29

Personally, I prefer

play03:30

to have it turned off.

play03:32

The next four options let

play03:33

us define various exclusions.

play03:35

We can tell the plugin to ignore certain

play03:37

folders, extensions,

play03:39

file name patterns, or

play03:40

fields across the vault.

play03:43

By default, nothing is excluded, and you

play03:45

can adjust those as you see fit.

play03:48

The autocomplete option does exactly

play03:49

what it sounds like.

play03:51

If turned on, the plugin

play03:52

will suggest existing values

play03:54

for you to choose from when entering them

play03:56

into your frontmatter.

play03:58

If you turn it off, this

play03:59

will not happen, of course.

play04:01

If you want to keep an eye

play04:02

on the field indexing status,

play04:04

you can activate the

play04:05

display of a small icon

play04:06

in Obsidian's status toolbar.

play04:09

You can also choose how a set of multiple

play04:11

values for a property

play04:12

shall be displayed.

play04:13

The options are "Array" and "Indented List".

play04:17

The last option under Global Settings

play04:19

is pretty straightforward and lets

play04:20

you define the first day of the week.

play04:23

By default, and for me, it is Monday,

play04:25

but you can change it to Sunday.

play04:27

In the next section, we

play04:28

can define global presets

play04:30

for certain fields.

play04:32

Let's add a field called "Status".

play04:34

In the field settings, we

play04:35

allow only the selection

play04:36

of a single value from a list.

play04:39

The list itself we define right here.

play04:41

It contains only three options.

play04:44

"To do", "WIP" for "work

play04:46

in progress", and "done".

play04:49

If I create a new

play04:50

note, right-click on it,

play04:51

and go to "Field

play04:52

Options", we now have the option

play04:54

to "Add Missing Fields at the section".

play04:58

I click on it and choose

play04:59

to add the missing fields

play05:00

to the end of the frontmatter.

play05:02

This adds the status

play05:03

field that we just defined,

play05:05

and also lets us pick one of the defined

play05:07

values for this field.

play05:09

Under the "fileClass settings", we

play05:11

prepare the ground for some

play05:12

of the "Metadata Menu" magic

play05:14

later on.

play05:15

First, we need to tell the plugin

play05:17

where to find our class files.

play05:20

This folder has to exist,

play05:21

so let's exit the settings

play05:22

for a moment and create it.

play05:24

As this is a new vault, I

play05:26

do not have any folders yet.

play05:27

However, it is not my first vault,

play05:29

and I expect it to grow.

play05:31

So I want to make sure

play05:32

that all the things I need

play05:33

to organize the vault are separated

play05:35

from my actual notes and content.

play05:38

This is why I usually create

play05:39

a folder called "90 Organize".

play05:42

In there, I add anything I need.

play05:44

In my main vault, this

play05:45

includes classes, databases, lookups,

play05:49

templates, and canvases.

play05:50

For now, I only create a folder "Classes"

play05:52

inside the "Organize" folder.

play05:54

Back in the settings, I can now select

play05:56

this folder as the path

play05:57

to our class files.

play05:59

Next, we can define a name

play06:01

for the "fileClass" field.

play06:02

You can leave the default or change it.

play06:04

As this is how the field

play06:06

is shown in the frontmatter,

play06:07

I prefer to call it just "Class".

play06:10

The global fileClass

play06:11

setting lets us define one class

play06:13

that shall be applied to all notes,

play06:15

even if no class is

play06:17

specifically defined in the note.

play06:19

You can use that to define some fields

play06:21

that you always want on your notes

play06:23

and to add these fields to legacy notes

play06:25

that were created before you

play06:26

started using file classes.

play06:29

As I don't have any

play06:30

file classes defined yet,

play06:31

I leave this empty for now.

play06:33

Next, we can limit the number of results,

play06:35

that means pages using a class,

play06:38

when viewing the "class files settings".

play06:40

We will see this in a bit.

play06:42

And the last option here,

play06:43

let's just decide whether

play06:44

the plugins dialog window

play06:46

or modal shall include an

play06:48

option to select a file class.

play06:50

In the "Metadata Menu button" section,

play06:52

we can define a

play06:53

default icon for the button.

play06:54

We will come to those a bit later

play06:56

and decide under which circumstances

play06:58

the icon shall be displayed.

play07:00

By default, these are all enabled.

play07:02

I recommend leaving them as

play07:03

they are in the beginning.

play07:05

And then disable those,

play07:06

which you don't want to see

play07:07

after having used the plugin for a while.

play07:09

The last section here lets us

play07:10

add a query and a file class

play07:12

that will be applied to

play07:13

all files matching the query.

play07:16

When it comes to fields,

play07:17

we need to understand that each field

play07:19

is defined by three things,

play07:21

a name, a type and type-specific options.

play07:26

Currently, the metadata menu plugin

play07:28

supports 18 different field types.

play07:31

Any field can be defined

play07:32

in the plugin settings,

play07:33

as shown earlier,

play07:34

or via a "file class note".

play07:37

If you define the same

play07:38

field in both places,

play07:40

then the file class

play07:41

note will have priority

play07:42

over the plugin settings.

play07:44

I will quickly demo them all

play07:45

and some of them we will

play07:46

see in action later on.

play07:48

All right, I will start

play07:49

by creating a new class

play07:50

called "Demo" in my classes folder.

play07:53

And to this class, we're going to add

play07:55

all the different fields.

play07:56

So let's keep everything

play07:57

else for the time being

play07:58

and go directly to "Fileclass fields",

play08:01

hit the "Add Field" button

play08:03

and start with the first type of field,

play08:05

which is an input field.

play08:07

For all these fields, you

play08:08

have additional options.

play08:09

You can set a command for the field,

play08:11

you can define how it should look like

play08:13

when it's used inline,

play08:14

meaning inside the node

play08:16

rather than in the frontmatter.

play08:18

And of course you can

play08:18

define or select the field type.

play08:21

As you can see, we have the whole list

play08:22

of the 18 types available.

play08:25

And for an input field, I

play08:27

just stick with this one.

play08:28

Next up, we're going to add a field

play08:31

which lets us pick a

play08:32

single value from a list.

play08:34

Let's say this is "list single".

play08:36

Now, which values I can pick from

play08:38

is something I can define directly here

play08:41

in the field settings, or I can use

play08:43

alternative sources.

play08:45

They can come from a node

play08:46

or they can come from a data view query.

play08:49

For now, we just stick to

play08:50

defining them in the settings.

play08:51

I will quickly add

play08:52

here the values one, two,

play08:54

and three respectively.

play08:56

Then we have the option to create a field

play08:57

that lets us pick

play08:58

multiple values from a list.

play09:00

Once again, I will

play09:01

define the values right here.

play09:03

The next field type

play09:04

which is similar to a list

play09:06

is a cycle value list.

play09:08

Once again, we select

play09:09

type, we define the values.

play09:12

The difference here is

play09:13

that instead of picking one

play09:15

or multiple values from the list,

play09:17

you will have a button in the properties

play09:19

which lets you cycle through

play09:20

the values on the said list.

play09:24

Next field type is very

play09:25

common, very useful as well.

play09:27

It's a simple checkbox field

play09:29

which can hold three

play09:30

different types of values.

play09:32

It can accept "true" or

play09:33

"false", but also a "null" value,

play09:36

which might be useful for running queries

play09:38

against it later on.

play09:40

Then we have the option to

play09:41

add normal number fields.

play09:44

These can hold

play09:44

numbers as one would expect

play09:46

and can be used for

play09:47

formulas and calculating things.

play09:50

Additional options for numbers field

play09:51

is you can have a step here.

play09:53

So say five, for example,

play09:55

this means that once you use it

play09:56

in your notes, you will

play09:57

have buttons for increasing or

play09:59

decreasing the value in this

play10:00

field by this defined step.

play10:03

So plus or minus five in my case.

play10:05

If you want, you can define

play10:06

a minimum and a maximum value

play10:08

for the respective field,

play10:10

but this is of course optional.

play10:13

Obsidian is all about linking nodes.

play10:15

So it's not a big

play10:15

surprise that we can also have

play10:17

a link field in our class definitions.

play10:21

In fact, we can have two different ones.

play10:22

One is for single links, so links to

play10:25

single documents only.

play10:27

And in here, we have additional options.

play10:29

We can use data field queries.

play10:31

We can also define

play10:32

aliases, how the link is supposed

play10:34

to look like when it's displayed.

play10:35

And we can define the sorting order.

play10:37

You have examples here,

play10:39

how to use these things.

play10:40

So I will just leave

play10:41

everything as it is by default.

play10:44

And then we add another

play10:45

field for multiple links,

play10:47

which works basically the same way,

play10:49

but of course allows you

play10:50

to have more than one link

play10:52

as a value in the respective field.

play10:55

Another all time

play10:56

favorite is a "date" field,

play10:59

which of course lets you store dates.

play11:01

Again, additional options here.

play11:03

You can format the

play11:04

date in the way you want.

play11:06

You can pick the option to

play11:07

insert a link by default.

play11:09

"link path" can be

play11:10

defined, but it's optional.

play11:12

You can define a shift

play11:13

interval, which once again,

play11:15

when you're in the

play11:15

properties, in the dialogue,

play11:17

you can use buttons

play11:18

to increase or decrease

play11:20

any given date by this specific interval.

play11:23

And you can also have a dynamic field

play11:25

containing these intervals.

play11:26

So in my case, it suggests a cycle field

play11:29

because it's the one with

play11:30

defined numbers already.

play11:31

But I will leave this set to none.

play11:33

The next one is a bit

play11:34

more than a simple field.

play11:36

It's one that can hold a lookup query.

play11:39

So if we go here to lookup query,

play11:40

then we have first the option to see

play11:42

we want this field to

play11:43

be updated automatically,

play11:44

which I usually turn on.

play11:46

I have not yet had problems with queries

play11:48

or performance issues here.

play11:50

And then we can define the query itself.

play11:53

In preparation for my showcase later,

play11:56

I'm going to add here a query that

play11:58

should return all the

play11:59

pages that have a specific tag,

play12:01

in my case, "article".

play12:03

We will see this in action in a moment.

play12:05

But for this to work, these

play12:07

other nodes, the "target notes",

play12:09

need to have a defined field inside of

play12:11

them with a link back

play12:13

to the main note.

play12:14

So I will call this field "parent".

play12:16

And then we will see how it works.

play12:19

The type of output is

play12:19

something you can pick,

play12:21

depending on your preferences.

play12:22

For me, I will just leave it

play12:24

as a list of links displayed

play12:26

in line in the frontmatter.

play12:28

Earlier, I mentioned the possibility

play12:30

to create a formula field.

play12:31

So let's take a look at this one.

play12:33

Here we can enter a formula that

play12:34

calculates values which

play12:35

we have in our frontmatter.

play12:37

For example, I could say I want to take

play12:38

the value from the "number"

play12:40

field, add to it a fixed amount of 10,

play12:44

and add on top of this whatever value

play12:47

we have in the "cycle" field.

play12:50

Once again, I want to make

play12:51

sure that this gets updated

play12:52

automatically whenever

play12:54

there is a change in one

play12:55

of these fields.

play12:57

Next, we have three field types that are

play12:59

related to the canvas.

play13:01

We have the option to update

play13:02

a value in our frontmatter

play13:04

based on links or based

play13:06

on groups, I'm using there

play13:09

or based on links to

play13:11

specific groups in the canvas.

play13:14

I will show all of those

play13:14

a bit later in the demo

play13:16

because for this to work, we actually

play13:17

need a canvas which I

play13:19

have not created yet.

play13:20

So we need to come

play13:20

back to those a bit later.

play13:22

However, what we can do already is

play13:24

we can take a look at the

play13:25

last four options here, which

play13:27

are object fields.

play13:28

I will start with a

play13:30

"list of object fields".

play13:31

So let's imagine a use case where I'm

play13:33

organizing or keeping

play13:34

track of meetings.

play13:36

So what I have in

play13:37

meetings always is "participants".

play13:39

I will add this.

play13:40

You can see it's an object list.

play13:42

And for each of these participants,

play13:44

I want to track certain information.

play13:46

For example, I would like to track the

play13:49

I will call it participant name, "pname".

play13:51

And here, I then have to select the

play13:53

parent of this field.

play13:54

In my case, this is "participants".

play13:56

I will accept any value

play13:57

because it's just a text.

play13:59

And you can see that we

play13:59

have this little indentation

play14:01

at the arrow indicating

play14:02

that the participant name is

play14:05

a child object of the

play14:06

participants object list.

play14:08

So let's add two more.

play14:10

We have the role of a person.

play14:11

I should call it "prole" probably.

play14:14

Again, belongs to participants.

play14:15

And it's an input field.

play14:17

And we have the "company".

play14:19

Participants, input field ...

play14:21

there you go.

play14:22

OK, so this was an object

play14:23

list with child objects.

play14:26

Now, let's see how it

play14:26

looks like for a field that

play14:27

also accept objects but

play14:29

uses values as fields.

play14:31

I will call this one "logistics".

play14:33

We are still in our

play14:34

meeting mind space, if you like.

play14:36

Does not have a

play14:36

parent because it's on top.

play14:38

All right, then let's

play14:39

add additional fields

play14:40

The logistics here.

play14:41

First of all, we have the "meeting date"

play14:43

belongs to logistics.

play14:45

Is of course a date field.

play14:47

I have no special

play14:48

formatting or restrictions here.

play14:51

And we have the "location"

play14:52

belonging to logistics.

play14:54

Once again, I should

play14:55

call this M location.

play14:56

So I know it's about the

play14:57

meeting because could be anywhere.

play15:00

And then I have here the "meeting type".

play15:03

And this I want like to be a cycle value.

play15:06

And I will simply say this

play15:08

could be a "one on one meeting".

play15:10

It could be a "client meeting".

play15:12

Or it could be anything else.

play15:14

Doesn't matter right now.

play15:16

And the last one I would like to add

play15:17

is a checkbox field which tells me

play15:19

whether this is a virtual meeting or not.

play15:22

Again, part of logistics, rule of rules.

play15:25

If it's "yes", it's virtual.

play15:26

If it's "no", it's face-to-face.

play15:28

OK, now we are still

play15:29

missing one last type here, which

play15:31

is a field that accepts a YAML object.

play15:34

I will show only the YAML one.

play15:35

The JSON one

play15:36

works exactly the same way.

play15:38

But instead of YAML formatted code,

play15:40

it would accept JSON code.

play15:42

And I will call this one "other info".

play15:46

And of course, this is

play15:46

part of logistics as well.

play15:48

Let's see how this

play15:49

looks like in real life.

play15:50

I will open a new note here.

play15:52

Put it side by side

play15:53

with our class definition.

play15:55

I will call this "Field Demo".

play15:57

Of course, we don't

play15:58

see anything right here

play15:59

because so far it does not really belong

play16:01

to a class which we can change by right

play16:03

clicking on the title

play16:04

and saying "add class to Field Demo".

play16:07

Currently, we have only one.

play16:08

So we can pick the "Demo" class.

play16:10

This is defined here.

play16:11

We can do the next step

play16:12

in two different ways.

play16:13

The first one is to

play16:13

right-click again on the tab

play16:15

and say "add missing

play16:16

fields at section", which

play16:18

will open a modal where we can say

play16:20

we would like to add

play16:20

all the missing fields

play16:22

at the end of the frontmatter.

play16:23

So that's one option.

play16:25

The other one is to left-

play16:26

click on the class icon.

play16:28

And then we get this nice little dialogue

play16:31

where we can also say "add

play16:32

everything in the frontmatter".

play16:34

Or we can also add fields individually.

play16:37

So if we say we have our

play16:38

input field and this is missing,

play16:40

we could add it here with one click.

play16:41

And then we automatically

play16:42

get asked for value for this.

play16:44

So I can enter some text here.

play16:46

And if we go back to our note,

play16:47

we can see that this is here.

play16:49

It really depends.

play16:50

In my case, I would

play16:51

like to add everything

play16:52

because I want to show

play16:53

all the different fields.

play16:54

And we can simply go through them.

play16:56

So this is currently our source code

play16:58

view as you probably noticed.

play16:59

And of course, I can also

play17:00

write things in here manually.

play17:02

But if I switch to the

play17:03

"reading view" or the "live preview",

play17:05

then I have all the fields

play17:06

with a little icon next to them.

play17:08

First of all, indicating what they are.

play17:10

And then, of course, I

play17:11

can simply input my values.

play17:13

Formula is automatically calculated.

play17:15

The lookup query is still

play17:16

empty because we do not yet

play17:18

have target nodes.

play17:19

We will see this change in a moment.

play17:20

For the date, I can

play17:22

simply pick something here

play17:23

with the date picker.

play17:24

I can also use the navigation to move on.

play17:27

I can insert the date if I want.

play17:29

And I can clear the field, of course.

play17:31

I'll leave this as it is for now.

play17:33

You will see that because of the settings

play17:35

that we defined here

play17:36

in the date field, we

play17:37

activated insert as a link by default.

play17:40

It is indeed a link.

play17:41

Talking about links, in

play17:43

the multiple links field,

play17:44

we can add links to multiple pages.

play17:47

And in the single one, we can, of course,

play17:48

only select one single page.

play17:50

For the number, we have our depths,

play17:53

as we defined them

play17:53

before, plus and minus 5.

play17:55

But we can also enter anything else

play17:57

that we would like to have there.

play17:59

As you will have

play17:59

noticed, changing the number

play18:01

also updates the formula field.

play18:03

So instead of 10, as it

play18:04

was before, now it's 31.

play18:06

Checkbox, I suppose, is fairly clear.

play18:08

You can check it or uncheck it.

play18:10

For the cycle values,

play18:11

remember we defined the value 7, 8, 9.

play18:13

So we can simply click through those.

play18:15

We have exactly these three values.

play18:17

And every time it changes,

play18:18

the formula also updates accordingly.

play18:21

Then we have our multiple

play18:23

value selection from lists.

play18:24

So I can pick the value

play18:25

4 and 6 in this field.

play18:27

And of course, the single value selection

play18:29

only lets you pick one value.

play18:31

Now, coming to participants.

play18:33

This is, as we discussed before,

play18:35

and as you can see here

play18:35

on the left-hand side,

play18:37

an object list with specific attributes.

play18:39

Now, if you click on this

play18:40

field, I get another dialog.

play18:42

Currently, there are no entries.

play18:43

So I can add one.

play18:45

And I can see here the name is Jane Doe.

play18:48

Her role is to be a CEO.

play18:51

And she works for a

play18:52

company called "The Champs".

play18:53

So now we have one

play18:54

additional participant here.

play18:57

But, and that's the nice

play18:58

thing about object lists,

play18:59

I can add here as many as I want.

play19:01

So I can put another one.

play19:02

And we say this one is Joe Doe.

play19:04

He is a CFO.

play19:06

And he works for the "Winners".

play19:08

Now we have two names in here.

play19:10

And we also see those in our metadata.

play19:12

And when I switch to source view again,

play19:14

you have to list it here

play19:15

underneath the participants field.

play19:17

All right, so this is

play19:18

for the object list.

play19:21

Now we have another one left here

play19:22

regarding our logistics.

play19:24

It works similarly, though not the same,

play19:26

because we have here

play19:27

just one entry, right?

play19:28

So each meeting has

play19:29

just one date, a location.

play19:31

We have a meeting

play19:31

type, which you can pick.

play19:33

I would say this is a client meeting.

play19:34

Is it virtual?

play19:35

It's not.

play19:36

We meet face-to-face.

play19:37

And other info, here we

play19:38

can add - in YAML format -

play19:40

whatever we want.

play19:41

So we can say person "Jane",

play19:45

food preference "vegetarian".

play19:48

Or we can add person

play19:50

"Joe", food preference "steak".

play19:53

And if we then go back to our frontmatter,

play19:55

we once again have here under "other info",

play19:59

exactly what we put there before.

play20:00

Here we have all the logistics.

play20:02

All right, now I still owe you the demo

play20:05

for the lookup query.

play20:06

For that, let me

play20:07

quickly create a new note.

play20:09

I will call this one lookup demo.

play20:12

I will add a field for "tags"

play20:14

and give it the value of "article".

play20:16

Actually, let me make

play20:17

this "LookupDemo1".

play20:18

And then I create another one,

play20:21

which is basically the same.

play20:23

We can also have a heading here

play20:25

and some text, make this a bit nicer.

play20:29

Okay, if we come back

play20:30

here to our "Field Demo" note,

play20:32

we can now see that our

play20:33

lookup query is still empty.

play20:35

Why is this?

play20:36

Because remember if we

play20:37

go back to the settings,

play20:38

we said there needs to be a field,

play20:40

a related field called "parent".

play20:42

Now let me quickly put

play20:44

this also to the side here

play20:45

so we can see all of

play20:46

these things happening

play20:47

at the same time.

play20:48

All right, so what we need now is a field

play20:51

in our target notes.

play20:53

So the lookup demo

play20:54

nodes are our target notes,

play20:56

whereas our field demo is

play20:57

our source note or lookup note.

play20:59

Now here we go and say we entered this

play21:01

parent field in line

play21:03

and then we need a link

play21:04

back to the field demo.

play21:06

And as soon as I do that,

play21:07

you can already see

play21:08

that in the lookup query,

play21:10

we now have "LookupDemo1".

play21:12

Let me do the same

play21:13

here. There you go.

play21:14

And our lookup query

play21:15

catches now the second demo note

play21:17

as well.

play21:18

And these are

play21:19

basically all the field types

play21:20

except for the ones

play21:21

related to the canvas,

play21:22

which I'm going to show

play21:23

in the demo in more detail.

play21:26

If all this sounds overwhelming and

play21:28

confusing, don't worry.

play21:30

Everything will fall in place

play21:31

once we apply those things in practice.

play21:33

Now with settings and

play21:35

field types out of the way,

play21:36

we can look at these

play21:37

mysterious "file classes"

play21:39

I have been mentioning

play21:39

several times already.

play21:41

Sorry to interrupt.

play21:42

I almost forgot, well,

play21:44

I did forget to quickly

play21:45

ask you to like the video

play21:47

and subscribe to the channel.

play21:49

Assuming you do like it, of course.

play21:51

But since you're still here,

play21:53

the odds for that seem to be good.

play21:54

So in any case, thank you.

play21:56

I appreciate it.

play21:58

File classes are a core part of the

play22:00

"Metadata Menu" plugin.

play22:02

They are used for

play22:03

defining default fields, options

play22:05

and field settings per class.

play22:08

Okay, but what is a

play22:09

"class" in this context?

play22:11

Well, think about the

play22:12

different types of notes you have

play22:14

or may have in your vault.

play22:16

For example, you may have

play22:18

articles, book summaries,

play22:20

projects, meeting

play22:21

notes, recipes, and so on.

play22:24

With the "Metadata" plugin,

play22:26

you can define

play22:26

specific fields and options

play22:28

that you want to use for each of the

play22:31

various types or classes.

play22:33

I suspect you would have different fields

play22:35

in your frontmatter for a recipe,

play22:37

then for meeting

play22:39

minutes or a book review.

play22:40

These rules and

play22:41

definitions are defined in

play22:43

and managed with classes.

play22:45

Technically, this is done with notes.

play22:47

So let's go to the

play22:48

previously created "Classes" folder

play22:50

and create a new note.

play22:51

I first want to define a general class,

play22:53

which I will use for all notes

play22:54

that do not belong to another class.

play22:57

It shall contain a few

play22:58

fields that are always relevant

play22:59

regardless of the specific note type.

play23:01

So I create a new note and I call it "All".

play23:04

Because I created

play23:05

inside the "Classes" folder,

play23:07

which we defined in

play23:07

the settings as the place

play23:09

where we store our classes,

play23:10

the plugin automatically

play23:11

knows that it is a class.

play23:13

If it does not, you

play23:15

just may have to close

play23:16

and reopen your vault.

play23:17

As you can see,

play23:18

we automatically get

play23:19

into the class settings.

play23:21

Now some of these we know already.

play23:22

We have been working with the

play23:24

"Fileclass fields" extensively

play23:25

in the previous chapter,

play23:26

but there are two other sections.

play23:28

There is the "Table view",

play23:30

which gives you a list of all the notes

play23:32

belonging to the respective class,

play23:34

which currently of course is none.

play23:36

And then we have "Fileclass Settings".

play23:38

Now before we jump into the

play23:39

"Fileclass Settings" in detail,

play23:41

we want to make sure that the "All" Class

play23:43

is indeed being used every

play23:45

time a new note is created

play23:46

and no other class is assigned.

play23:48

To do so, we go to the "Settings",

play23:51

"Metadata Menu" Settings,

play23:53

and "FileClass settings".

play23:54

And here in the field

play23:55

that we left empty before,

play23:56

the "global fileClass",

play23:58

we can now select our "All" Class.

play24:01

Once again, doing so will

play24:02

make sure that any note we create

play24:04

will belong to the "All" Class initially.

play24:06

There's another thing that might be

play24:08

useful in this context.

play24:09

It's this setting here to

play24:10

"add a fileclass after create".

play24:13

If you enable this,

play24:14

then you will always be prompted

play24:16

to pick an existing class for a note.

play24:19

Currently I have it disabled

play24:20

because I still create notes quite a lot,

play24:22

which do not need to belong to any class.

play24:24

But if you're working in a way

play24:26

that every note

play24:26

belongs to a specific class,

play24:28

this is very useful.

play24:29

All right, so we have

play24:30

defined our "Global File Class"

play24:32

and can get out of the settings.

play24:34

Now let's see how this works.

play24:35

Let's create two fast fields.

play24:37

One, we will simply call "tags"

play24:39

because this is something I always want

play24:40

to have in my notes.

play24:41

We'll accept any value of course.

play24:43

And the second one I will call "Class"

play24:46

because obviously I need to have a field

play24:49

for a class as well.

play24:50

Now the "Class" field would be a list

play24:53

where I can pick a single value from

play24:54

because I would like each note

play24:56

to belong to just one class exactly.

play24:58

As we saw before,

play24:59

I can define the values for this list

play25:01

directly here manually,

play25:02

or I can use alternative sources.

play25:04

I can pick sources from a note,

play25:06

which we will see a bit later,

play25:07

or I can use a Dataview Query

play25:09

to return certain items for my list.

play25:11

In my case, I would like

play25:12

to use a Dataview Query.

play25:14

If you don't know

play25:14

anything about Dataview,

play25:15

that's totally fine.

play25:16

You can simply copy paste the query

play25:18

and simply adapt it to your own needs.

play25:20

What this one does is it

play25:22

gives me a list of pages

play25:24

from a specific folder.

play25:25

In my case, the "90

play25:26

Organize/Classes" folder.

play25:29

Remember, this is where

play25:29

we keep all the classes

play25:31

and then just returns the page file name.

play25:33

So basically this will give me values

play25:35

for this specific list field

play25:37

based on all the notes I

play25:38

have in this specific folder.

play25:40

All right, so these are the things

play25:41

I always want to have in any new note.

play25:43

Now let's see what happens

play25:44

when I create a new note.

play25:45

I will call it "Note1".

play25:47

We immediately see this

play25:47

belongs to the "All" class

play25:49

because of this little icon up here,

play25:51

which is the same as the one

play25:53

defined for the class itself.

play25:54

Now, as we have seen before,

play25:56

if I click on this icon,

play25:57

I will see which fields are missing.

play25:58

I can add them all to the

play26:00

frontmatter and there you go.

play26:02

Now here we can say

play26:02

this is "All" and for tags,

play26:04

we can put whatever we want.

play26:06

Okay, having defined a

play26:08

general class for all the notes,

play26:09

I still owe you the details

play26:11

for the "Fileclass settings".

play26:12

So let's take a look at those.

play26:14

First item here is simply a value

play26:16

that you can define as you wish

play26:18

for the maximum number of rows

play26:19

you get returned in the "Table view".

play26:21

Remember we saw the "Table view" before,

play26:23

it was empty because we had no notes

play26:25

belonging to this class.

play26:26

Now we have "Note1" and

play26:29

it shows up as it should.

play26:30

The second option is "map with tag".

play26:32

So what this does is it

play26:34

binds tags with the class name.

play26:36

So we can activate this.

play26:37

And then any notes that have a tag

play26:39

that matches our

play26:40

class name, in this case "All",

play26:42

will automatically be seen

play26:44

and assigned to this respective class.

play26:46

If you don't want this to

play26:47

be based on the file name,

play26:48

you can actually define

play26:50

specific tag names right here.

play26:52

So instead of using the file name,

play26:53

you can say, I want all the

play26:54

notes with the tag "article"

play26:56

to be treated as a

play26:57

member of this specific class.

play26:58

If you don't want to do it with tags,

play27:00

you can also do it with file paths.

play27:02

So you can say

play27:02

everything in a specific folder

play27:03

shall be part of this

play27:04

class and with bookmark groups.

play27:06

I don't have any

play27:07

bookmark groups, but if I did,

play27:09

they would show up here

play27:10

and you can use them as well.

play27:11

Now, you will have noticed

play27:12

that I skipped the "button icon".

play27:14

The button icon is simply the definition

play27:16

of which icon should be displayed

play27:17

for notes belonging to a specific class.

play27:20

By default, this is a clipboard icon,

play27:21

but we can change this.

play27:23

In order to know what

play27:24

icons you can use there,

play27:25

I suggest going to the

play27:26

website, "lucide.dev".

play27:29

Simply look for all the

play27:30

icons, search for one.

play27:32

I will take note here.

play27:33

You can then simply

play27:34

click this little code,

play27:36

copy it over to Obsidian,

play27:37

enter it here, and the note will appear.

play27:40

If you save these

play27:40

changes, then you will see

play27:41

that all the notes

play27:42

that belong to this class

play27:44

are automatically updated as well.

play27:46

These last two settings here help us

play27:48

with organizing our classes.

play27:49

We can create a kind of tree structure

play27:52

where we have top classes like "All",

play27:54

and then specific subclasses helping us

play27:57

to organize our frontmatter for the

play27:58

different note types.

play28:00

So for example, I

play28:01

could add a new class here,

play28:02

which I call "Project".

play28:03

And if I go to project settings,

play28:05

I can first change the icon, for example,

play28:08

and we can then say the parent class

play28:10

for the project class should be "All".

play28:12

What this does, is by default inheriting

play28:15

all the fields that we have

play28:16

defined for the "All" class.

play28:18

So our "tags" and "class"

play28:20

fields, which we defined in "All",

play28:22

will automatically be used for project

play28:24

class notes as well.

play28:25

Of course, if I don't want to do this,

play28:27

I can say I want to

play28:28

exclude certain fields,

play28:29

which you can then

play28:30

pick from this list here.

play28:31

For the time being,

play28:32

let's just use it as it is.

play28:33

And we have our first two

play28:35

levels of our class hierarchy

play28:37

with "All" and "Project" underneath.

play28:39

Of course, not every class needs to be

play28:41

part of the hierarchy.

play28:42

If we look at our "Demo" class,

play28:44

we can see there is no parent defined,

play28:46

which is totally fine.

play28:48

Congratulations, you made it

play28:50

through the relatively

play28:50

dry, theoretical part.

play28:52

If you skipped it, feel

play28:54

free to use the detailed chapters

play28:55

to go back and look up

play28:56

anything that seems unclear

play28:58

during the following practical demos.

play29:00

In this section, I

play29:01

will not spend much time

play29:03

on explaining the logic

play29:04

and mechanisms anymore.

play29:06

First, we will see how

play29:07

all this works on its own.

play29:09

That means without

play29:10

needing any other plugins.

play29:12

And then I'm going to

play29:13

walk you through a use case

play29:14

of writing articles or blog posts,

play29:17

using the Obsidian Canvas

play29:18

to organize the workflow

play29:20

and the related notes.

play29:22

I believe this is easy to understand.

play29:24

Anything you see here

play29:25

can of course be applied

play29:26

to other topics and areas as well.

play29:29

Let's go back to the

play29:30

previously created class note

play29:31

for "Project".

play29:32

We already defined the custom icon

play29:34

and we assigned the "All"

play29:36

note as our parent file class.

play29:38

Now let's add some file class fields.

play29:41

There is "phase", which is a

play29:43

list of the values: backlog,

play29:45

research, write, review,

play29:48

published and outdated.

play29:51

Then I have a field called "status",

play29:53

which is again a list

play29:54

field with the values: to do,

play29:56

in progress, done,

play29:58

blocked, on hold and canceled.

play30:00

And I want to have a

play30:01

field called "priority"

play30:03

with the options of: low, medium and high.

play30:06

These are all select fields.

play30:07

And for now I defined the

play30:08

permitted values manually,

play30:10

directly in the settings.

play30:12

I do not need to define

play30:13

the "class" and "tags" field

play30:14

because we inherit those already

play30:16

from the "All" parent class.

play30:18

I can now create the note "Project1".

play30:21

I assign the class to it

play30:22

and add the related fields.

play30:24

Because we can have

play30:25

different types of projects,

play30:27

we can and perhaps should create a class

play30:30

per project type.

play30:32

I will quickly create an "article" class

play30:34

with the "project" class as its parent.

play30:37

So you can see how we

play30:38

slowly build a sort of tree

play30:40

out of our classes.

play30:42

This class inherits

play30:43

the "class" and "tags" fields

play30:45

from the "All" class.

play30:46

And it also gets the "phase",

play30:48

"status", and "priority" fields

play30:50

from the "project" class.

play30:51

However, it also has

play30:52

some specific fields,

play30:53

which I will add now.

play30:55

First, there is "author",

play30:56

which is a normal input field,

play30:58

letting me enter any text I want.

play31:00

And then I want to add a date

play31:02

field for the publish date,

play31:04

which I call "published".

play31:05

By using the parent file class,

play31:07

we just created a structure like this,

play31:10

which helps us to minimize the

play31:11

administrative effort

play31:12

for classes and

play31:13

maximize the frontmatter quality

play31:15

and consistency across our notes.

play31:18

But what if we don't want to inherit

play31:20

exactly the same fields

play31:21

that are in our parent class?

play31:24

Well, if we want to remove

play31:25

a parent field completely,

play31:27

we can simply do so in

play31:28

the "Fileclass settings"

play31:30

under "excluded fields".

play31:32

For example, we could

play31:33

remove the "status" field

play31:34

from our "article" class.

play31:37

If we want to keep the field,

play31:38

but have different values for it,

play31:40

we can add it again with the same name

play31:42

and customize the values.

play31:45

Here, I just copied the "phase" field

play31:47

from the "project"

play31:47

class to my "article" class.

play31:49

Then I add the phase "rejected" to it.

play31:53

Going back to our article note,

play31:55

we can now see the new phase is

play31:56

in the list of available options too,

play31:59

while the values in the

play32:00

project note remain unchanged.

play32:02

One more thing to make this easier:

play32:04

You will recall that I defined the values

play32:06

for each list field manually.

play32:09

As this is a nightmare to maintain,

play32:11

I practically never do this in real life.

play32:13

Instead, I work with "lookups".

play32:15

Here is how that works

play32:16

and where the dedicated "Organize" folder

play32:18

comes in very handy.

play32:20

The "phase" field for our

play32:21

project class is a good example.

play32:23

I want to replace these

play32:24

manually defined values

play32:26

with a lookup.

play32:27

As you can see,

play32:28

we can change the values source type

play32:31

to "values from a note".

play32:32

But first, we need to create this note.

play32:35

So I go back to my "Organize" folder

play32:37

and create a new

play32:37

folder there called "lookups".

play32:39

In there, we create a note

play32:41

and call it "project phase".

play32:43

Then we add one value

play32:44

per line to that note.

play32:46

Back in the field settings,

play32:47

we now change the source

play32:48

type to "values from a note"

play32:50

and then select this note "project phase".

play32:54

Back in the "Project1" note,

play32:55

we can still select the value for the

play32:57

phase field as before.

play32:58

But if I now add a new

play33:00

phase to the lookup note,

play33:01

this change will

play33:02

automatically be reflected

play33:04

and the new value will be

play33:05

available to pick from the list.

play33:07

This is much faster and easier

play33:08

than going to the field settings.

play33:10

So you can see with a bit of planning,

play33:12

you can build a flexible set of classes

play33:15

and if needed, a class hierarchy

play33:17

that - in combination with templates -

play33:19

will help you to keep your

play33:20

notes frontmatter consistent.

play33:23

For the second use case,

play33:25

we will combine the functionality

play33:26

of the "Metadata Menu" plugin

play33:29

with one of Obsidian's

play33:30

core plugins: the Canvas.

play33:32

This combination will

play33:33

let you manage your notes

play33:34

and their metadata by simply

play33:36

dragging them around on a canvas.

play33:38

It will also let you establish a workflow

play33:41

and visualize your work progress.

play33:43

I use this approach for

play33:44

managing my Obsidian videos

play33:46

and a digital garden that I publish

play33:48

via Obsidian to my website.

play33:50

Moving notes around on this canvas will

play33:52

update their status.

play33:53

For example, currently

play33:55

all the notes are published.

play33:56

If I were to move one

play33:57

into a different box or group

play33:59

and update my digital garden,

play34:01

this note would

play34:02

automatically be unpublished too.

play34:04

Okay, we are back in my sandbox.

play34:06

The first thing to do is

play34:07

to create a new canvas.

play34:08

I will call it "MDM Canvas demo".

play34:11

I want to use the canvas

play34:13

to visualize my workflow

play34:15

and where each of my

play34:16

articles is in that workflow.

play34:18

I also want it to update the respective

play34:20

article's frontmatter

play34:22

for its "phase" and "status"

play34:24

depending on where it is on the canvas.

play34:26

To do so, I create

play34:28

horizontal swim lanes for the status.

play34:30

In my case, they are

play34:31

for backlog, in progress,

play34:34

done, canceled and on hold.

play34:38

But you can put whatever

play34:39

suits your needs, of course.

play34:40

Then I add vertical

play34:41

swim lanes for the phase.

play34:43

I will use research,

play34:45

writing, review, published,

play34:49

and outdated.

play34:50

If I arrange these swim lanes nicely,

play34:53

it will give us a grid

play34:54

or a matrix, if you like.

play34:55

These swim lanes are

play34:56

what canvas calls "groups".

play34:58

We need to remember

play34:59

that for the next step.

play35:00

Now let's prepare the "article" class

play35:02

for working with canvas.

play35:03

For that, I add two new

play35:04

fields called "cPhase" and "cStatus",

play35:08

to differentiate them from

play35:09

the previously defined ones.

play35:10

For both fields, I define the field type

play35:12

to be "updates with groups in canvas".

play35:16

Then I need to tell the

play35:17

field which canvas to look for.

play35:20

We now have a logical

play35:21

connection from our note "Article1"

play35:24

to the "article" class and to our canvas.

play35:27

Next, I need to add a new note.

play35:29

I will add a card first

play35:30

and call it "Article2".

play35:33

Once I have my ideas collected as cards,

play35:36

I start converting them into files

play35:38

with the same respective name.

play35:40

When I open such a file in a new tab

play35:42

and make sure that I am in "source mode",

play35:45

we can see that there is

play35:46

no frontmatter at all,

play35:48

but that the file

play35:49

belongs to the "All" class,

play35:50

indicated by the icon next to its name.

play35:53

Now we can right click on the note title.

play35:55

We remove the "All" class

play35:56

and the note's icon changes

play35:58

to that of the "article" class.

play36:00

If we click on that icon,

play36:02

we can select

play36:02

individual fields to be added

play36:04

to our frontmatter or add all the

play36:06

missing ones in one go.

play36:08

We also see our class

play36:09

hierarchy starting with "All",

play36:11

via "project" to "article", and

play36:14

can decide to only add the fields

play36:16

that come directly with

play36:17

each of these classes.

play36:18

I do so.

play36:19

And in our fron matter, we now see "tags",

play36:22

"phase", "status", "published", and "author".

play36:25

If I now move the note on the canvas

play36:27

to the intersection of

play36:29

"backlog" and "research",

play36:30

its frontmatter gets

play36:31

updated automatically.

play36:33

Oh, but hold the phone!

play36:34

We now have both values in each field.

play36:36

That's not what we want.

play36:38

So we need to tell the

play36:39

class which swim lanes

play36:41

or canvas groups map to which field.

play36:44

Let me delete these fields

play36:45

from the frontmatter again

play36:46

and go to the "article"

play36:47

class "field settings"

play36:48

and look at the "cPhase" field first.

play36:51

At the bottom of the dialogue,

play36:52

we can define that the

play36:53

field shall be populated based

play36:55

on canvas groups identified by

play36:57

colors or by the group names.

play37:00

If each of your groups

play37:01

has a different color,

play37:03

you can use those of course.

play37:04

In my case, I have three

play37:06

phases with the same color

play37:07

and even one phase and

play37:09

one status group are red -

play37:11

so, have the same color.

play37:12

This means, colors are

play37:13

not going to work for me.

play37:14

Instead, I will define the group names,

play37:17

adding each of the phase names here.

play37:19

Then I do the same for

play37:20

the "cStatus" field.

play37:22

Of course, this needs

play37:22

to be done only once,

play37:24

but if you add new phases or statuses,

play37:26

you would have to update these values.

play37:28

Let's go back to our note

play37:29

to see the frontmatter.

play37:30

If I now move the note on the canvas,

play37:32

both fields get updated correctly.

play37:35

The same principle

play37:36

applies when we are updating

play37:37

front matterfields based on links,

play37:39

we do on the canvas between items

play37:41

rather than the groups they belong to.

play37:44

Here I opened the three

play37:45

article notes I prepared earlier.

play37:47

And as you can see,

play37:48

"Article3" already contains

play37:50

frontmatter for "cStatus" and "cPhase",

play37:53

based on the steps we did just before.

play37:55

Now I'm going to drag

play37:56

"Article1" and "Article2"

play37:59

on my canvas as well.

play38:00

As soon as I do that, of course,

play38:02

the frontmatter for

play38:03

"cStatus" and "cPhase"

play38:04

gets updated in both notes as well.

play38:07

What I would like to do

play38:08

now, is to show the sequence

play38:10

of these articles.

play38:11

So I go to the "Fileclass

play38:13

fields" and add two new fields.

play38:16

One for previous chapter

play38:18

and the second one for next chapter.

play38:21

For both fields, I

play38:22

chose the field type "updates

play38:24

with links in canvas".

play38:25

For the field "previous

play38:26

chapter", we choose incoming

play38:28

because we want to

play38:29

track from which chapter

play38:31

or from which note on the canvas,

play38:33

an arrow or a

play38:34

connection is pointing towards

play38:36

the respective note. For

play38:38

the field "next chapter",

play38:41

it's of course, the other way around.

play38:42

If I now draw an arrow from

play38:44

"Article1" to "Article2"

play38:45

on my canvas, you

play38:47

will see that both notes

play38:48

get updated accordingly.

play38:50

And of course, the

play38:51

same is true when I do it

play38:52

from "Article2" to "Article3".

play38:55

Of course, I can still move the notes

play38:56

around on our canvas.

play38:58

As long as they stay

play38:58

within the different groups,

play39:00

the frontmatter of these

play39:01

notes is going to be updated

play39:03

accordingly and even when I

play39:04

move it to different groups,

play39:06

the frontmatter information

play39:07

for previous and next chapter

play39:09

based on the links that

play39:10

we created, not the groups,

play39:12

is not going to change.

play39:13

This concludes another deep dive

play39:15

into one of Obsidian's

play39:17

more complex plugins.

play39:18

Let me know in the

play39:19

comments what you liked

play39:20

or did not like about the video.

play39:22

And if you have any

play39:23

requests for one of the next ones,

play39:24

drop them there too.

play39:26

I'd rather make videos about topics

play39:27

people are interested in

play39:28

than what I think they might like.

play39:30

And that's it for today.

play39:32

Thanks for watching

play39:32

and see you next time.

Rate This

5.0 / 5 (0 votes)

الوسوم ذات الصلة
Metadata MenuObsidian PluginSetup GuideField TypesFile ClassesPractical DemosNote OrganizationFrontmatterCommunity PluginsObsidian Tips
هل تحتاج إلى تلخيص باللغة الإنجليزية؟