全站通知:

帮助:模板/面包屑

来自召唤与合成2WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
版权说明
本页面来源于克鲁塞德战记BWIKI的模板:面包屑,其版权协定可能与召唤与合成2BWiki有异。经过双方编者的修改或翻译,本页面可能已与来源有很大差异。

模板介绍

描述

面包屑用于回到上级页面,无上级页面时,则回到首页,首页不需要添加。

语法

  • 上级页面只有首页时
{{面包屑}}
  • 有其他上级页面时
{{面包屑|上级页面}}

示例

  • 上级页面只有首页时



  • 有其他上级页面时


源模板理解

前言

  • 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是最终结果

第六步