全站通知:
模板:面包屑
刷
历
编
跳到导航
跳到搜索
模板:[编辑模板]
[模板历史]
[刷新缓存]
[模板列表]
文档:[编辑文档]
[文档历史]
[查看文档]
说明文档
模板介绍
描述
面包屑用于回到上级页面,无上级页面时,则回到首页,首页不需要添加。
语法
- 上级页面只有首页时
{{面包屑}}
- 有其他上级页面时
{{面包屑|上级页面}}
示例
- 上级页面只有首页时
- 有其他上级页面时
源模板理解
前言
- BWIKI语义降维后差不多和EXCEL一个水平,作为一个代码小白,也可以勉强理解
- 以下分析权当学习和理解的笔记(个人是觉得挺适合当array系列的理解例子的)
第一步
{{#vardefine:@pageName|{{#ifeq:{{{1|}}}||{{PAGENAME}}|{{{1|}}}}}}} {{#arraydefine:@wikiPage|{{索引页面}}|;}}
- 定义变量@pageName,直接把页面名字定义成变量@pageName(或者自己输入一个)
- 定义数组@wikiPage,从索引页面(相当于统筹所有页面分类的地方)引入
第二步
{{#arraysearcharray:@pagetitle5|@wikiPage|/\s*,{{#var:@pageName}},\s*/}}
- 从@wikiPage里面找到,以/\s*,{{#var:@pageName}},\s*/为关键词的数组,提起并命名成@pagetitle5
- 逻辑:找一下变量@pageName(即引用面包屑页面的名字)存不存在于数组@wikiPage(即索引页面)里面
第三步
{{#ifeq:{{#arraysize:@pagetitle5}}|0||X}}
- 简单判断@pagetitle是否为存在(size=0即为不存在)。X为第四步
- 逻辑:如果不存在,则返回空白,如果存在,则继续第四步
第四步
{{#arraydefine:@pagetitle5_a|{{#arrayprint:@pagetitle5}}|:}}{{#arrayindex:@pagetitle5_a|0}}/{{#arrayindex:@pagetitle5_a|1}};
- 把@pagetitle以:为准分成俩部分(这个也是索引页面的格式来源),左边(第一部分)和右边(第二部分)用/隔开,并且在最后加上;
- 逻辑:把@pagetitle处理成要展示(面包屑)的格式
重复2~4步
{{#ifeq:{{#arraysize:@pagetitle5}}|0||X<!-- -->{{#ifeq:{{#arraysize:@pagetitle4}}|0||X<!---- ---->{{#ifeq:{{#arraysize:@pagetitle3}}|0||X<!------- ------>{{#ifeq:{{#arraysize:@pagetitle2}}|0||X<!-------- -------->{{#ifeq:{{#arraysize:@pagetitle1}}|0||X<!---------- ----------->}}}}}}}}}}
X部分由四+二组合,注意数字递减,还有不要换行,以及@pagetitle1时不需要最后一行的二
{{#arraydefine:@pagetitle4_a|{{#arrayprint:@pagetitle4}}|:}}{{#arrayindex:@pagetitle4_a|0}}/{{#arrayindex:@pagetitle4_a|1}};{{#arraysearcharray:@pagetitle3|@wikiPage|/\s*,{{#arrayindex:@pagetitle4_a|0}},\s*/}}
第五步
{{#arraydefine:@newPageTitle|第一步+刚才重复的2~4步|;}} {{#arrayunique:@newPageTitle}} {{#arraydefine:@newPageTitleA|{{#arrayindex:@newPageTitle|4}};{{#arrayindex:@newPageTitle|3}};{{#arrayindex:@newPageTitle|2}};{{#arrayindex:@newPageTitle|1}};{{#arrayindex:@newPageTitle|0}}|;}}{{#arrayunique:@newPageTitleA}}
- 逻辑:
- 一到四步是判断这个页面到底属于第几级,判断出的结果经过第四步的处理会用;分割。
- 最后处理完的结果,会在第五步再次分割、再处理、清楚重复的;
- 最终数组@newPageTitleA是最终结果
第六步