Динамически изменять поле заголовка (или просто заголовок в макросе вкладок) в TiddlyWiki
Я собираю несколько шаблонов TiddlyWiki, и я столкнулся с чем-то, что было бы неплохо иметь, но я не уверен, возможно ли это на самом деле.
У меня есть несколько тиддлеров, которых я включаю в другой тидлер, используя tabs
макро. С каждым тидлером связан один из двух тегов. Я хотел бы добавить фрагмент текста к caption
в представлении вкладок, в зависимости от того, какой тег связан.
У меня нет сильных предпочтений для того, чтобы сделать это, добавив какой-то обратный вызов для редактирования caption
на сохранение, то, что как-то вычисляет желаемое caption
на лету, изменяя вызов tabs
макрос для пересчета caption
при рендеринге или каким-либо образом вызывая шаблоны для расчета caption
поле.
Я не нашел ничего перспективного в просмотре документации, но, возможно, я просто не понял, что имеет отношение к моей проблеме. Я считаю, что это часто случается.
Например, я уверен, что могу написать условные выражения в зависимости от того, существуют ли теги, но я не вижу способа интерполировать текст в caption
поле на основе любого рода вычислений вообще.
Для справки, вот мои текущие вызовы макросов:
<<tabs [list[]] state:$:/state/tabPeriod template:PeriodTemplate>>
<<tabs [list[$(currentTab)$]] state:$:/state/tabEvent class:"tc-vertical" template:"EventTemplate">>
<<tabs [list[$(currentTab)$]] state:$:/state/tabScene template:"SceneTemplate">>
Все эти строки взяты из разных шаблонов, которые просто извлекают список тиддлеров и превращают их в закладки, используя предоставленный шаблон. В настоящее время вкладки подписаны с помощью тиддлера caption
, если определено, и отступить к title
, Я хотел бы изменить заголовок, в идеале, не вставляя слишком много шаблона в тиддлеры.
1 ответ
Я понял, что мне нужно сделать по-другому: я определил пользовательский макрос на основе макроса вкладок, добавил логику, и теперь он работает нормально. Я просто изменил текущее содержимое логики заголовка на:
<$set name="tv-wikilinks" value="no">
<$transclude tiddler=<<currentTab>> field="caption">
<$macrocall $name="currentTab" $type="text/plain" $output="text/plain"/>
</$transclude>
<$list filter='[<currentTab>tag[light]]'>
○
</$list>
<$list filter='[<currentTab>tag[dark]]'>
●
</$list>
</$set>
Я не уверен, правильно ли я использую виджет списка, но он работает.