在 TiddlyWiki 中动态更改标题字段(或只是标签宏中的标题)

Dynamically change caption field (or just title in tabs macro) in TiddlyWiki

我正在整理一些 TiddlyWiki 模板,我已经 运行 制作了一些很不错的东西,但我不确定它是否真的可行。

我有一些 tiddlers,我正在使用 tabs 宏将它们包含在另一个 tiddlers 中。每个 tiddler 都有两个与之关联的标签之一。我想根据关联的标签将一段文本附加到选项卡视图中的 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">>

所有这些行都来自不同的模板,它们只是拉出一个 tiddlers 列表,然后 template-transclude 使用提供的模板将它们放入选项卡中。 目前,选项卡的标题是tiddler caption,如果已定义,则退回到title。我想更改标题,最好不要在 tiddlers 中插入太多样板文件。

我想出了我需要做的不同的事情:我定义了一个基于选项卡宏的自定义宏,添加了逻辑,现在它工作正常。我基本上只是将标题逻辑的当前内容更改为:

<$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>

我不确定我是否正确使用了列表小部件,但它确实有效。