Cat

Obsidian: Шаблоны

В этой статье я расскажу про то, как можно автоматизировать некоторые задачи с помощью встроенного плагина Шаблоны и подготовлю себя и вас к самому крупному и исчерпывающему руководству по плагину Templater , который я выпущу следующей публикацией. 

Obsidian для пользователя Vangeli 24 Апрель 2025 Просмотров: 73

Слова благодарности

Перед тем как перейти к моим наблюдениям о том, как устроены шаблоны в Obsidian хочу поблагодарить всех тех, кто прочел мою предыдущую статью, посвященную визуальному оформлению заметок в Obsidian и тем, кто поучаствовал в обсуждении. Мне правда очень приятно осознавать, что те знания, которыми я обладаю - могут помочь кому-то еще.


Автоматизация заметок с помощью шаблонов

Одно из немногих направлений, в которых Obsidian действительно силён и может оказаться по-настоящему полезным — это возможность настраивать и переиспользовать собственные "компоненты". Тут попрошу не ругаться, но когда я задумался о том, что такое шаблоны в Obsidian, то пришел к выводу, что компоненты описывают это лучше всего. Сейчас объясню:

  • мы можем настроить переиспользование определенной информации как с учетом динамических данных, так и без (в шаблонизаторе Jinja2 это называется макросом, а в Vue JS это компонент);
  • мы можем внедрять в шаблоны так называемую «бизнес-логику» (если избегать путаницы, давайте договоримся, что в данном контексте под этим будем понимать повседневные задачи, которые мы решаем в своих хранилищах), вплоть до управления данными: удаление заметок и директорий, настройка планировщиков, взаимодействие с внешними API и многое другое;
  • мы можем тесно интегрироваться как со встроенными, так и со сторонними плагинами. Более того, некоторые плагины изначально предполагают, что пользователь будет взаимодействовать с ними именно через шаблоны (например ModalForms).

Наверняка я упустил некоторые признаки, которые также помогли бы в обосновании почему шаблоны в Obsidian можно называть компонентами, но, надеюсь, что и так сейчас стало немного более понятно, о чем пойдет речь в этой статье и моем отношении к происходящему.

Когда мне впервые понадобилось создать свой шаблон, я, не задумываясь, обратился к GPT с просьбой «сделать всё за меня». Он, конечно, справился — но понимания у меня от этого не прибавилось, а сгенерированный код оказался, как я позже понял, довольно посредственным. Да и сам процесс можно было реализовать куда проще.

Какие виды шаблонов бывают?

Мне известны два способа создать собственные шаблоны:

  1. Используя встроенный плагин "Шаблоны";
  2. Используя сторонний плагин "Templater"

Встроенный плагин "Шаблоны"

Возможности этого плагина просты до безобразия, но а разве все полезное должно быть сложным? Не буду лукавить и соглашусь с тем, что в нем нет того функционала, который может закрывать более сложные/осознанные задачи, но для ведения "регулярных заметок" этого может быть более чем предостаточно.

Я не фанат привычек и не гонюсь за продуктивностью, могу рашить проекты за день/два или тупить неделями над минимальным функционалом, но мне стало интересно отследить в течение месяца объем всего, что я закрываю по-факту.

В каждой своей статье я повторяю, что не нужно гнаться за избыточным функционалом или возлагать "сверхответственность" на Obsidian, поэтому для этого эксперимента я буду использовать именно встроенный плагин Шаблоны, а не Templater.

Документация

Не стоит пренебрегать официальной документацией и руководствами, там зачастую содержится исчерпывающая информация, к тому же - она доступна в том числе и на русском языке.

Повторюсь, что документацию по встроенному плагину вы можете найти здесь.

Разработчики предполагали, что:

Плагин «Шаблоны» позволяет быстро вставлять фрагменты текста в текущую заметку.

А также, что этот инструмент идеально подходит для "Ежедневных заметок" и Zettelkasten

Но к сожалению, то количество интерактивных полей, с которыми мы можем взаимодействовать используя встроенный плагин сильно ограничено. Мы можем использовать в своих компонентах:

  • Дату: {{date}};
  • Время: {{time}};
  • Название заметки: {{title}};
  • Тело заметки (будет использоваться все содержимое заметки);

Настройки

В меню настроек Шаблонов нам доступны:

  • выбор папки с шаблонами;
  • выбор формата даты;
  • выбор формата времени.

Как использовать?

Чтобы начать использовать встроенный плагин Шаблоны, необходимо выполнить несколько простых шагов:

  1. Указать путь, где будут храниться шаблоны;
  2. Создать по этому пути файл шаблона;
  3. Открыть заметку, в которой хотите использовать шаблон в режиме редактирования;
  4. Вызвать меню встроенного плагин:
    • С помощью палитры команд: Cmd/Ctrl + P, затем введите Шаблоны или начните вводить название своей заметки/шаблона;
    • С помощью нажатия на иконку Шаблоны на левой боковой панели.
  5. Выбрать интересующий вас шаблон;

Звучит логично и просто, не правда ли?

Создание шаблона для встроенного плагина

Напомню, что я решил провести небольшой эксперимент: понаблюдать за своей эффективностью и заодно понять, какой объём задач я реально успеваю закрыть, c помощью отслеживания своих целей и планов в течение месяца.

Как бы я декомпозировал эту задачу?

  1. Ежедневно фиксировать цели — в начале и в конце рабочего дня;
  2. Фиксировать текущую дату;
  3. Отмечать время начала и окончания рабочего дня.

Какие проблемы я вижу?

  1. Мне важно не забывать создавать заметку каждый день. Поэтому хотелось бы, чтобы при открытии хранилища запускался скрипт, автоматически создающий шаблон по умолчанию. Это можно реализовать двумя способами:
    • с помощью Templater и его функции Startup Templates;
    • либо с помощью встроенного плагина Ежедневные заметки.
  2. Чтобы видеть прогресс в течение дня, шаблон стоит разделить на две части. Мне не хочется, чтобы поля «Цели» и «Результаты» находились в заметке сразу — это убивает ощущение динамики. Логичнее оформить это как единый «ежедневный отчёт», но в две фазы:
    • Часть 1: Начало дня — создаётся автоматически при запуске хранилища;
    • Часть 2: Конец дня — добавляется вручную в ту же заметку.

UPD: к сожалению, планировщика из коробки у Obsidian нет, следовательно напоминать, что мне необходимо создать заметку как-будто бы не получится, что тоже верно, но только отчасти.

Если рассматривать напоминание как уведомление, а не как автоматическое выполнение действия, то здесь есть варианты:

  • Использовать Telegram API, чтобы бот отправлял личное сообщение с напоминанием. Минус: встроенные шаблоны не умеют исполнять JavaScript, а значит нельзя вставить шаблон по расписанию с их помощью.
  • Использовать сторонний плагин [Reminder](https://github.com/uphy/obsidian-reminder), который умеет отправлять напоминания внутри самого Obsidian — и это может быть удобным компромиссом.

Как я решал эту задачу?

Создал папку "Шаблоны" в своем хранилище, в котором разместил необходимые компоненты и указал в настройках плагина;

Создал 2 шаблона/компонента:

  1. "Начало дня", в котором указал следующие поля:
    • "День", с использованием динамического значения даты;
    • Заголовок: "Цели вначале дня";
    • "Старт", с использованием динамического значения времени;
    • Пустой элемент маркированного списка с типом "задача";
    • Элемент маркированного списка с типом "задача", в котором вызван планировщик от Reminder с напоминанием, что необходимо внести результаты в указанное время;
    • Блок: "Примечания", в котором по необходимости буду добавлять какие-то пометки, которые необходимо учитывать, но не имеет смысла указывать в теле задачи;
  2. "Конец дня", в котором указал следующие поля:
    • Заголовок: "Результаты дня";
    • "Конец", с использованием динамического значения времени;
    • Элемент маркированного списка с типом "задача";
       

В настройках встроенного плагина "Ежедневные заметки" указал папку, где будут создаваться ежедневные заметки, а также указал, что заметки необходимо создавать каждый день при открытии хранилища;

Что у меня получилось?

На мой взгляд, получился довольно занятный и простой инструмент, который поможет мне немного лучше понять мои возможности на какой-то конкретной дистанции.

Я понимаю, что человеческий фактор никто не может отменить, поэтому использую дополнительные инструменты, которые помогут держать в голове этот эксперимент.

Повторюсь, что теперь каждый день при открытии моего хранилища будет создаваться и открываться заметка в указанной мной папке, а также каждый вечер в указанное время я буду получать уведомления, если не закрыл задачу по внесению результатов в свой мини-отчет.

Насколько это окажется эффективным я смогу рассказать спустя время, но вполне вероятно, что это дополнительный, никому не нужный оверхэд :)

 

Уведомление о том, что нужно заполнить

 

Итоговый вид дневной заметки

 

Чего не хватило?

Из-за ограничений встроенных "Шаблонов" мы не можем реализовывать практически никакую бизнес-логику, из-за чего мы не можем подсчитать, например, какая это заметка по счету. Это бы получилось, если бы я использовал Templater и считал бы количество файлов в определенной дирректории или, например, в Frontmatter-е последней заметки записывал ее порядковый номер, а затем обрабатывал бы это значение.

Но встроенные шаблоны хороши как раз своей простотой и подобного рода ограничения, на мой взгляд, это повод задуматься: "а насколько этот функционал нужен и важен? а могу ли я получить нечто похожее, каким-нибудь другим путем?"

Звучит как то, что неизбежно породит костыль, но а с другой стороны, если быть чем-то ограниченым, то для меня это вызов попробовать вырваться из таких ограничений.

Заключение

В следующей статье я постараюсь сделать самое большое и самое подробное в русскоязычном сегменте руководство по использованию плагина Templater. По правде говоря, хотел рассмотреть встроенные и сторонние шаблоны в рамках этой статьи, но, к сожалению, тогда статья была бы очень и очень большой. Надеюсь, что эта статья подготовит мышление читателя к формированию шаблонов в Obsidian и к следующей статье у вас появится возможность попробовать какие-то свои пайплайны.

Буду рад, если в комментариях вы поделитесь практическими задачами, которые хотели бы решать с помощью Obsidian, или опишите интересные решения, которые вам уже удалось реализовать.

Мне также было бы приятно, если бы вы положительно оценили эту статью и участвовали в обсуждении.

    Нет комментариев

    Реклама