多个当前条目路径
-
最近写了上面一个想法,便想着在tiddlywiki里实现。我主要是想实现多个当前条目路径。这样某一个条目是从那些根目录里传递来的,能很快就看到。但之前的面包屑代码只能用一个,要么就是重新复制,所以花了几个小时,我把里面的代码打包成了宏。
可以安装
$:/plugins/mabuqian/gumo-customisation
插件,0.3.7版本,即目前的最新版本。如果你不想安装插件,也可以复制下面内容到你的wiki里。title: $:/plugins/mabuqian/gumo-customisation/cell-rock caption: 当前条目 tags: $:/tags/Macro type: text/vnd.tiddlywiki \define yetAgain(use_apex_tag:"true",apex_tag,tid) <$reveal type='match' state={{{$use_apex_tag$!!}}} text='true'> <$reveal type='match' state={{$tid$!!title}} text={{$apex_tag$}}> <$link to=<<currentTiddler>>> <$view field='title'/> </$link> > <$list filter=<<Extra>> emptyMessage=''> ... > </$list> <$list filter="""$(End)$"""> <$link to=<<currentTiddler>>> <$view field='title'/> </$link> > </$list> <br> </$reveal> </$reveal> <$reveal type='nomatch' state={{$use_apex_tag$}} text='true'> <$link to=<<currentTiddler>>> <$view field='title'/> </$link> > <$list filter=<<Extra>> emptyMessage=''> .. > </$list> <$list filter="""$(End)$"""> <$link to=<<currentTiddler>>> <$view field='title'/> </$link> > </$list> <br> </$reveal> \end \define again(use_apex_tag-2:"true",apex_tag-2,tid-2) <$list filter=<<First>>> <$transclude $variable="yetAgain" apex_tag="$apex_tag-2$" tid="$tid-2$" use_apex_tag="$use_apex_tag-2$"/> </$list> \end \define finalFilter(use_apex_tag-3:"true",apex_tag-3,tid-3,length_limit) <$set name=First filter="""$(TheFilter)$ +[last[]]"""> <$set name=End filter="""$(TheFilter)$ +[butlast[]] +[butfirst[]] +[first{$length_limit$}] +[reverse[]]"""> <$set name=Extra filter="""$(TheFilter)$ +[butlast[]] +[butfirst[]] +[butfirst{$length_limit$}] +[limit[1]]""" emptyValue='[is[system]!is[system]]'> <$transclude $variable="again" apex_tag-2="$apex_tag-3$" tid-2="$tid-3$" use_apex_tag-2="$use_apex_tag-3$" /> </$set> </$set> </$set> \end \define breadcrumbsEmptyMessage(use_apex_tag-5:"true",apex_tag-5,tid-5,length_limit-3) <$set name=TheFilter filter="""$(TheFilter)$ [<CurrentTag>]"""> <$transclude $variable="breadcrumbs" apex_tag-4="$apex_tag-5$" tid-4="$tid-5$" use_apex_tag-4="$use_apex_tag-5$" length_limit-2="$length_limit-3$"/> </$set> \end \define breadcrumbs(use_apex_tag-4:"true",apex_tag-4,tid-4,length_limit-2) <$list filter='[<CurrentTag>tags[]] -[[$:/tags/SideBar]]' variable=CurrentTag emptyMessage=""" <$transclude $variable="finalFilter" apex_tag-3="$apex_tag-4$" tid-3="$tid-4$" use_apex_tag-3="$use_apex_tag-4$" length_limit="$length_limit-2$" /> """> <$list filter="""$(TheFilter)$ +[field:title<CurrentTag>]""" emptyMessage=<<breadcrumbsEmptyMessage>>> </$list> </$list> \end \define cell-rock(root,namx,true-gate,long,text) <$list filter="[<currentTiddler>!prefix[$:/]in-tagtree-of:inclusive[$root$]]"> <div style='width:100%'> <$reveal type='nomatch' state={{{ [[$:/state/Global/ShowBreadcrumbs/$rooot$]] }}} text=true> <$button class='tc-btn-invisible' set={{{ [[$:/state/Global/ShowBreadcrumbs/$rooot$]] }}} setTo='true'> {{$:/core/images/right-arrow}} <$text text="$text$"/> </$button> </$reveal> <$reveal type='match' state={{{ [[$:/state/Global/ShowBreadcrumbs/$rooot$]] }}} text=true> <$button class='tc-btn-invisible' set={{{ [[$:/state/Global/ShowBreadcrumbs/$rooot$]] }}} setTo='false'> {{$:/core/images/down-arrow}} <$text text="$text$"/> </$button><br> <$set name=CurrentTag value={{!!title}}> <$set name=TheFilter filter='[is[current]]'> <$transclude $variable="breadcrumbs" apex_tag-4="$root$" tid-4="$namx$" use_apex_tag-4="$true-gate$" length_limit-2="$long$" /> </$set> </$set> </$reveal> </div> </$list> \end
你需要把上面的内容保存为
.tid
文件,还需要安装林一二的$:/plugins/linonetwo/in-tagtree-of
插件,因为不安装就使用不了。这个插件挺强大的,推荐了解一下。使用的话,我推荐用最新的
<$transclude />
方式,当然你用<<cell-rock >>
形式也是可以的。<$transclude $variable="cell-rock" root="TableOfContents" namx="TableOfContents" true-gate="true" long="15" text="当前条目路径"/>
查看上面代码,可以发现里面有四个参数。
- root,即根目录
- namx,状态名称,需要与根目录保持一致,别问为什么要多搞一个参数,因为之前的面包屑代码我看不懂,只能多搞一个参数。
- true-gate,也是写true即可。写其他参数就不会显示面包屑的功能了。
- long,是长度。面包屑支持最长的长度。
- text,是面包屑图标右边的文本。我习惯于和根目录名字保持一致,但也可以定义成其他文本。
created: 20240708144122638 list-after: $:/core/ui/ViewTemplate/title modified: 20240708144426315 tags: $:/tags/ViewTemplate title: yui type: text/vnd.tiddlywiki <$transclude $variable="cell-rock" root="TableOfContents" namx="TableOfContents" true-gate="true" long="15" text="当前条目路径"/>
你只需要新建一个条目,正文中写一下这个宏,然后设置标签为
$:/tags/ViewTemplate
,就可以了。当然建议再添加一个字段list-after
,值为$:/core/ui/ViewTemplate/title
,这样就会放在标题下面展示了。比原版改进了两点,一是只有当前条目属于根目录的内容时,才会展示面包屑,而不会所有普通条目都展示。二是当使用两个或两个以上的面包屑时,两者的展示打开不会冲突。即所属的状态条目不一样。除非两个面包屑的根目录是一致的。
-
__plugins_mabuqian_gumo-customisation.json
CPL不知道为什么没有加载出来,可能得等1个小时后刷新就能加载出来了。当然也可以从上面下载。一定要安装林一二的
$:/plugins/linonetwo/in-tagtree-of
,不然实现不了。 -
bug已修复,最新版本是0.3.8了,可以去mabuqian-customisation 下载最新版本插件试用,也可以等CPL一小时后更新使用。
一定要安装林一二的那个插件,不然效果实现不了。
效果就是如图片所示。可以设置两个根目录。两个根目录不会冲突。如果一个根目录下面有多个路径的话,也会显示出来的,这是原版的功能,保留了。