跳转至内容
  • 最新
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
  • 太微中文教程
  • 新插件投票看板
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
太微中文论坛icon

太微中文论坛

  1. 首页信息流
  2. 版块
  3. 讨论
  4. 多个当前条目路径

多个当前条目路径

已定时 已固定 已锁定 已移动 讨论
7 帖子 2 发布者 110 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 机杼机 离线
    机杼机 离线
    机杼
    写于 最后由 编辑
    #1

    构建网目录

    最近写了上面一个想法,便想着在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,这样就会放在标题下面展示了。

    比原版改进了两点,一是只有当前条目属于根目录的内容时,才会展示面包屑,而不会所有普通条目都展示。二是当使用两个或两个以上的面包屑时,两者的展示打开不会冲突。即所属的状态条目不一样。除非两个面包屑的根目录是一致的。

    1 条回复 最后回复
    0
    • 机杼机 离线
      机杼机 离线
      机杼
      写于 最后由 编辑
      #2

      __plugins_mabuqian_gumo-customisation.json

      CPL不知道为什么没有加载出来,可能得等1个小时后刷新就能加载出来了。当然也可以从上面下载。一定要安装林一二的$:/plugins/linonetwo/in-tagtree-of,不然实现不了。

      1 条回复 最后回复
      0
      • 机杼机 离线
        机杼机 离线
        机杼
        写于 最后由 编辑
        #3

        目前还有点bug,等晚上再修一修

        1 条回复 最后回复
        0
        • WhiteFallW 离线
          WhiteFallW 离线
          WhiteFall
          写于 最后由 编辑
          #4

          若一个组织拓扑结构是分形的,呢么这个组织方式就是好的组织结构。因为可以容纳无限。

          一个好主意是可以使用多层树构建网,一般来说两层树就可以。第一层树根据相关性构建。第二层引用第一层树更具逻辑构建。

          这里层次是指垂直层次。上层依赖下层实现。第二层树,即上层可以有很多树。这些树可以不断对第一层树进行组织,输出。

          这样就是多输入多输出的系统。

          1 条回复 最后回复
          0
          • WhiteFallW 离线
            WhiteFallW 离线
            WhiteFall
            写于 最后由 WhiteFall 编辑
            #5

            树其实就是一个拓扑意义上的分型结构。

            类似的还有线性表,list和dict

            1 条回复 最后回复
            0
            • WhiteFallW 离线
              WhiteFallW 离线
              WhiteFall
              写于 最后由 WhiteFall 编辑
              #6

              我发现 无论是标题,还是文件名,还是文件夹名,都是给内容起名字。这听起来就像是dict。标题给内容块起名字,文件给文件内容起名字,文件夹是为文件们起个名字。呢么,起名字是为了什么呢?

              1 条回复 最后回复
              0
              • 机杼机 离线
                机杼机 离线
                机杼
                写于 最后由 编辑
                #7

                bug已修复,最新版本是0.3.8了,可以去mabuqian-customisation 下载最新版本插件试用,也可以等CPL一小时后更新使用。

                一定要安装林一二的那个插件,不然效果实现不了。

                ee5f3c6b-953b-4959-abfc-8dc07eb695f7-23H_SCB2741EZ8~Z7RBNF17.png

                效果就是如图片所示。可以设置两个根目录。两个根目录不会冲突。如果一个根目录下面有多个路径的话,也会显示出来的,这是原版的功能,保留了。

                1 条回复 最后回复
                0

                • 登录

                • 没有帐号? 注册

                • 登录或注册以进行搜索。
                Powered by NodeBB Contributors
                • 第一个帖子
                  最后一个帖子
                0
                • 最新
                • 版块
                • 标签
                • 热门
                • 用户
                • 群组
                • 太微中文教程
                • 新插件投票看板