This is a plugin for Obsidian (https://obsidian.md).
With this plugin, you can write your templates using LiquidJS tags
This plugin is still under heavy development, so it's not optimized yet and has basic features.
There is an autocomplete feature that by default is triggered by ;; but can be customized in the options

This means that you can create a template made from smaller ones, for example (assuming that your templates folder is templates):
templates/header.md
# Header
Insert a common header
templates/footer.md
---
I'm just a footer
templates/awesome_template.md
{% include "header" %}
This is the body of my note: {{title}}
link to today note [[{{date}}]]
{% include "footer" %}
When you create a note with the "Awesome template" template, you'll end up with:
A cool title.md
# Header
Insert a common header
This is the body of my note: A cool title
link to today note [[2021-05-21]
---
I'm just a footer
But other than that, you can use all the basic tags and filters
For now I'll keep the documentation of the filters here, when they become more I'll move it somewhere more convenient
date filterThe LiquidJS built-in date filter has been replaced with a custom one.
For now, if there is a % character in the date format the old filter is used, otherwise the new one will take place.
The new date filter uses date-fns as library to handle dates, and the format strings to use are showed here: date-fns formats
There are also some special words that can be used with this filter:
"now"
{{ "now" | date: "yyyy-MM-dd" }}
Use the date from new Date and formatted with the given format
"today"
{{ "today" | date: "yyyy-MM-dd" }}
same as now
"yesterday"
{{ "yesterday" | date: "yyyy-MM-dd" }}
use the subDays function to subtract 1 from Date.now() and formatted with the given format
"tomorrow"
{{ "tomorrow" | date: "yyyy-MM-dd" }}
use the addDays function to add 1 to Date.now() and formatted with the given format
date Default formatNow you can use the "Date Format" you defined inside the plugin settings in a easier way:
Before: {{ "now" | date: default_date_format }}
Now: {{ "now" | date }} the format you specified in the settings is now used as default
days_ago filterA simple filter that uses the subDays to subtract days from the current date (Date.now())
Keep in mind that this filter returns a date that needs to be formatted, so needs to be used with the date filter, like this:
{{ 1 | days_ago | date }} same as {{ "yesterday" | date }}{{ 2 | days_ago | date }} return the date from two days agoThis can be used for a "Weekly Review" template, something like:
- [[{{ 7 | days_ago | date }}]]
- [[{{ 6 | days_ago | date }}]]
- [[{{ 5 | days_ago | date }}]]
- [[{{ 4 | days_ago | date }}]]
- [[{{ 3 | days_ago | date }}]]
- [[{{ 2 | days_ago | date }}]]
- [[{{ 1 | days_ago | date }}]]
days_after filterA simple filter that uses the addDays to add days to the current date (Date.now())
Keep in mind that this filter returns a date that needs to be formatted, so needs to be used with the date filter, like this:
{{ 1 | days_after | date }} same as {{ "tomorrow" | date }}{{ 2 | days_after | date }} return the date from two days from nowOther than the classic, date, time and title variable you also have:
| Name | Description |
|---|---|
| default_date_format | The date format that you have specified in the plugin settings and can be used like this: {{ "now" | date: default_date_format }} |
| default_time_format | The time format that you have specified in the plugin settings and can be used like this: {{ "now" | date: default_time_format }} |
For now, this plugin just includes the basic version of LiquidJS, but I want to extend it to allow:
{{ 1 | days_ago | date: default_date_format }}{{ "dQw4w9WgXcQ" | youtube_iframe }} run a command and end up with the parsed result, in this case, the youtube iframe. (the youtube_iframe tag does not exist yet)