在 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>
我不确定我是否正确使用了列表小部件,但它确实有效。
我正在整理一些 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>
我不确定我是否正确使用了列表小部件,但它确实有效。