Wikidot模块参考手册

模块暂不可用: 此动态功能尚未由只读迁移站支持。

[[embed]]
<iframe src="//interwiki.scpwikicn.com/styleFrame.html?priority=2
&type=sidebar
&override={$override}&theme=https://cdn.scpwiki.com/theme/en/basalt/normalize-min.css
&css={$css}" style="display: none"></iframe>
[[/embed]]

[[embed]]
<iframe src="//interwiki.scpwikicn.com/styleFrame.html?priority=2
&type=sidebar
&override={$override}&theme=https://oxygennine.github.io/Peroxide/CSS/Interwiki/Interwiki.css
&css={$css}" style="display: none"></iframe>
[[/embed]]

隐藏Saving Pages显示Saving Pages

[[iftags +原创 +版式]]

69a9c5f12e120.png

v1.0.1
Rating: +125


欢迎使用过氧化物Peroxide基础版式,这是一个不基于任何前置版式的美学版式,其前身为一氧化物版式,由OxygenNineOxygenNine开发。

在任何页面上,通过在页面顶端插入以下代码以启用此版式:

[[include :scp-wiki-cn:theme:peroxide]]


预设

推荐的引用顺序是:先引用过氧化物本体(可以调整参数),再引用布局方案,最后引用配色预设。配色预设会覆盖前面的设置。

布局方案

引用教程经典布局经典布局 版头居中经典布局 切换侧边栏版头居中侧边栏常显侧边栏切换位于版头页面内容布局

需要在引用过氧化物版式后,再引用布局方案,例如:

[[include :scp-wiki-cn:theme:peroxide]]
[[include :oxygennine:peroxide:layout-classic-header]]

除了“页面内容布局”之外,不同的布局方案彼此互不兼容。

配色方案

引用教程深色高对比度铅封水华极境覆巢薄荷扫描

需要在引用过氧化物版式后,再引用配色方案,例如:

[[include :scp-wiki-cn:theme:peroxide]]
[[include :oxygennine:peroxide:palette-dark]]

如果需要将本来是黑色的LOGO变成白色,需要启用引用参数logoInvert=*,例如:

[[include :scp-wiki-cn:theme:peroxide logoInvert=*]]
[[include :oxygennine:peroxide:palette-dark]]

自定义

可以通过引用参数对过氧化物进行简单的自定义。请复制下面的引用模板。

在使用模板时不要删除参数——如果你只希望改动其中一两个参数,那就把剩下的完整保留。

[[include :scp-wiki-cn:theme:peroxide
|custom=*
↑ 启用自定义参数。
|title='SCP基金会'
↑ 版头标题。左右使用半角引号括住。
|slogan='控制 / 收容 / 保护'
↑ 版头副标题。左右使用半角引号括住。
|logo={{url('https://oxygennine.github.io/Peroxide/Images/scp-logo-line-black.svg')}}
↑ 版头LOGO。以CSS url()格式引入。
|colorLight=#3b69e4
↑ 亮一些的主题色。
|colorNormal=#3d5cab
↑ 主题色。
|colorDark=#354f96
↑ 暗一些的主题色。
|logoInvert=
↑ 是否将LOGO黑白反转;填“*”启用。
]]

排版元素

引用块和div元素

[[div class="blockquote"]]
[[div class="p-bq"]]

默认引用块。

默认引用块嵌套。

[[div class="blockquote-clear"]]
[[div class="p-bqc"]]

无边框引用块。

[[div class="blockquote shadow"]]
[[div class="p-bq shadow"]]

有阴影的引用块。
任意div的class若加上shadow,则自动拥有阴影。

[[div class="notation"]]
[[div class="p-no"]]

标准装饰块2。

[[div class="underline"]]
[[div class="p-ud"]]

下方划线的引用块。

[[div class="doubleline"]]
[[div class="p-dl smaller"]]

doubleline是上下都划线。
smaller会缩短div的尺寸,对任何一个div都起效果。

[[div class="doubleline dark"]]
[[div class="p-db dark"]]

dark会让div变成暗色,对任何一个div都起效果。

[[div class="card"]]
[[div class="p-ca"]]

标准装饰块3。

特性

布局

#page-content被设置成类似流明冲击的纵轨道,可以使用下列class的div制作整个页面宽度范围的布局:

fullwidth
全宽
extrude
突出
content
正文
extrude
突出
fullwidth
全宽
[[div class="fullwidth-start end-extrude-start"]]
[[div class="extrude-start end-content-start"]]
[[div class="content"]]
[[div class="start-content-end extrude-end"]]
[[div class="start-extrude-end fullwidth-end"]]
[[div class="extrude-start"]]
[[div class="extrude-end"]]
[[div class="extrude"]]
[[div class="fullwidth-start"]]
[[div class="fullwidth-end"]]
[[div class="extrude-start fullwidth-end"]]
[[div class="fullwidth"]]

这使得插入全宽元素更方便,但亦导致过氧化物无法正确显示裸文本布局(例如,使用换行而非空行可能会让Wikidot错误解析为裸文本而非块级元素<p>),CSS float也会失效。为取得最大兼容性,可将所有内容包裹在一个{{

}}内,或使用[[include :oxygennine:peroxide:layout-page-content-block]]取消这一特性。

二级导航栏

隐藏“Saving Pages”

在保存页面时,底部会出现一个“隐藏Saving Pages”的按钮。若遇到页面无响应,可点击此按钮,隐藏背景遮罩,将代码复制到安全的地方并刷新页面,重新编辑。

本地化

部分Wikidot未在Translate Wikidot列出的文本通过CSS伪元素进行了翻译。

打印

由于过氧化物使用ThemePreviewer以提升加载速度,你可能会遇到使用Wikidot自带的打印预览时无法显示版式的问题。可以通过引用参数printFriendly解决此问题:

[[include :scp-wiki-cn:theme:peroxide
|printFriendly=*
]]

声明

过氧化物的代码现在完全托管在Github上。原有的通过Module CSS方式引用版式的页面出于兼容性考虑暂时保留,但将在未来停止使用。

此版式内置了Agent FSAgent FS优化脚注组件,并修改了部分代码。

图标来自Bootstrap图标库SVG Repo

正文字体为更纱黑体,等宽字体为JetBrains Mono,衬线字体为思源宋体。

此版式的全部CSS代码采用的授权方式为CC-BY-SA 4.0 International

源代码参见GitHub仓库

[[/iftags]]

Rating: +125

本页面是对应的Wikidot官方文档的一个简要的中文版本,翻译了绝大部分有关Wikidot模块的内容。尽管有相当多的模块十分鸡肋,Wikidot的模块系统可待发掘的地方还有很多。

译名和术语参考

什么是Wikidot模块

是类似[[module 模块名]][[module 模块名]] … [[/module]]的结构,这样的模块调用Wikidot本身的API来爬取网站的内容。你最常用到的[[module Rate]]就是一个模块,其中Rate就是模块名。

“Module”一词并没有官方的中文翻译,这里暂且译为“模块”,不过其实也可以翻译成“模组”,看你比较喜欢哪个称呼了。

根据官方文档,模块分为以下几种:

  • 列表和分类(Listing and categorizing),例如ListPages、Categories等列出网站内容的模块。
  • 用户和成员(Users, members),例如Members、Join(加入网站)这样有关Wikidot用户的模块。
  • 论坛和讨论(Forum &1 discussion),有关论坛功能的模块。
  • 新闻与订阅源(News & feeds),只包括Feed和FrontForum。
  • 页面评分(Page rating),只包括Rate和RatedPages。
  • 图片、画廊和附件(Photos, galleries, files),顾名思义。
  • 搜索(Searching),与Wikidot搜索功能有关,基本不可用。
  • 变更(Changes),仅包括SiteChanges一个模块。
  • 杂项(Miscellaneous),例如ThemePreviewer、FeaturedSite等,值得注意的是,Wikidot将CSS模块也分在此类。
  • 已废弃(Deprecated),包括一些不再被Wikidot支持(但不一定无法使用)的模块。

一般来说,模块的使用方式为:

[[module 模块名 属性1="属性值" 属性2="属性值" …]]
%%变量名%%
其它内容
[[/module]]

其中,[[module 模块名 属性1="属性值" 属性2="属性值" …]]是开始标签,[[/module]]是闭合标签。并不是所有模块都需要闭合标签。也并不是所有模块可以设置属性和变量,具体见下面的模块列表。

我们下面开始逐个讲解每个模块。

在此之前你可能需要了解的高级Wikidot语法

接下来的介绍会涉及Wikidot的一些很实用的高级语法,虽然它们不属于模块,但经常配合模块使用,有必要了解。

[[html]]、[[iframe]]和[[embed]]

这三个标签都用于引入HTML代码。然而,它们的作用方式略有不同。

首先,[[html]] … [[/html]]内可以插入任意的HTML代码,但开始和结束标签必须独占一行。即,类似这样的语法是无效的:

html
[[html]] <p>Hello World!</p> [[html]]

为使Wikidot解析[[html]],你必须以如下形式使用它:

html
[[html]]
<p>Hello World!</p>
[[html]]

Wikidot会将这种HTML代码以{{<iframe>}}的形式呈现出来。也就是说,你可以自由插入JavaScript脚本,但你没办法用它更改页面上的内容;你只能用它更改{{@@[[html]]@@}}以内的东西。由于HTML被储存在wdfiles.com,根据同源策略,想让它访问父页面的内容也是不可能的。尽管如此,有一些奇特的技巧可以实现将{{@@[[html]]@@}}里的属性向外传递,例如[[[component:passcode|这个]]]。

[[html]]难以被嵌入行内。如果你希望在行内嵌入<iframe>,可以使用[[embed]]。但[[embed]]只接受<iframe>标签,如果你在其中插入任何其它的HTML元素,Wikidot将会展示一个报错信息。甚至,尽管Wikidot自己的文档中提供了在[[embed]]中插入<script>的例子,如果你亲自去尝试就会发现Wikidot仍然会报错。例如:

html
[[embed]]<p>Hello World!</p>[[/embed]]

最终会被解析为:

[[div style="    border: solid 1px #b10000;
color: #b60000;
padding: 0rem 2rem;"]]
Sorry, no match for the embedded content.

唯一可行的使用[[embed]]的方式是这样的:

html
[[embed]]<iframe src="https:example.com"></iframe>[[/embed]]

[[iframe]]可以直接引入<iframe>标签。它的语法是[[iframe URL attributes]],最终被解析为<iframe src="URL" attributes></iframe>。其中,attributes支持如下属性:frameborder0或者1),alignleftrighttopbottommiddle),heightwidthscrollingyes或者no),classstyle

[[#expr]]、[[#if]]和[[#ifexpr]]

即判断表达式。[[#expr]]用于计算数值,[[#ifexpr]]则根据计算结果判断其应该被解析的内容。这两个标签允许使用数学/逻辑语法以及3个内置函数(absminmax),长度最大可为256个字符。

[[#expr]]是数值计算器,语法为:[[#expr 计算式]]。例如:[[#expr abs(-20) + min(1,2,3) + (10%7)]]最终被解析为[[#expr abs(-20) + min(1,2,3) + (10%7)]],其中%是取余数。

[[#if]]是简单的真假判断器,语法为:[[#if 值 | 为真时显示的内容 | 为假时显示的内容 ]]。显示内容支持基本的Wikidot语法,例如:[[#if 1>0 | //True// | //False// ]]最终会被解析为[[#if 1 | True | False ]]。

[[#ifexpr]]是根据计算结果判断显示内容,语法为:[[#ifexpr 比较式 | 为真时显示的内容 | 为假时显示的内容 ]]。例如,[[#ifexpr 1+1>=2 | //True// | //False// ]]最终被解析为[[#ifexpr 1+1>=2 | True | False ]]。

[[iftags]]

[[iftags]]根据页面的Tag来判断被它包裹的内容是否会显示。语法为:[[iftags +tag1 -tag2 tag3]]

其中,+或者没有前缀表示该标签必须存在,-表示该标签必须不存在。对于下面的内容:

[[iftags +tag1 -tag2 tag3]]
可能显示的内容
[[/iftags]]

如果一个页面有“tag1”和“tag3”这俩个标签,并且没有“tag2”这个标签,那么页面上就会出现“可能显示的内容”。如果以上两个条件有任何一条没被满足,这行字就不会出现。

[[date]]

[[date]]用于显示格式化的日期。语法为:[[date 时间戳 <format="格式<|agohover>">]]

其中,“时间戳”是UNIX时间,即1970年1月1日与所需日期之间的秒数。“格式”是Wikidot的占位符文本,默认为%e,即类似1970/1/1 00:00:00这样的时间格式。%Y%m%d分别表示年、月、日、英文月份,例如[[date 0 format="%Y年%m月%d日"]]会被显示为1970年01月01日。完整的占位符列表如下所示(基本上与PHP strftime相同):

打开表格关闭表格
占位符描述示例
%a3字母星期名称缩写Mon
%A英文星期全称Monday
%b3字母月份缩写Mar
%B英文月份全称March
%c本地日期表示形式2009/3/9 20:04:58
%d当月的第几天(个位数前有0补全)09
%D等同于“%m/%d/%y”03/09/09
%e当月的第几天(没有0补全)9
%H小时(24小时制)20
%I小时(12小时制)08
%m月份(个位数前有0补全)03
%M分钟(个位数前有0补全) (00…59)04
%O计算时间5988 days
%pAM或PMPM
%r等同于“%I:%M:%S %p”08:04:58 PM
%R等同于“%H:%M”20:04
%S秒(个位数前有0补全)58
%T等同于“%H:%M:%S”20:04:58
%y年份(只显示后两位)09
%Y年份(完整)2009
%Z或%Z时区GMT+08

如果属性里有agohover,例如[[date 1145141919 format="%Y年的那事|agohover"]],把鼠标悬浮在上面就会出现一个提示框,显示从2006年的那事之后过去了多少天。

[[include]]

[[include]]用于导入其它的页面。语法为:[[include 页面名称 |属性1=属性内容 |属性2=属性内容…]]

例如,导入插图方块的方式为[[include component:image-block |name=(URL) |caption=描述]]。在此格式中,namecaption即为引用参数,而|用于分隔属性。不同属性允许换行,但一个引用参数内部的换行无法被识别。最终,Wikidot会将component:image-block这个页面里的所有内容插入到相应页面中。

有些版式给出的引用方式类似于{{@@[[include :scp-wiki-cn:theme:mox]]@@}},并特别强调了“在任何维基页面上”,这是因为{{:scp-wiki-cn}}是SCP中文维基的二级域名,它强调了要加载{{@@https://scp-wiki-cn.wikidot.com@@}}上的页面。如果不特别强调这个二级域名,在其它Wikidot网站上引用的就是对应网站下的{{/theme:mox}}页面,但这个页面很有可能并不存在。所以,我推荐你养成在{{@@[[include]]@@}}里加上二级域名的习惯。

引用参数是以这样的形式被设置的:在被引用的页面里,任何类似{$parameter_name}的文本都对应着名为parameter_name的引用参数。当你在引用时添加|parameter_name=content,这个页面里的{$parameter_name}就会被替换为content。Wikidot语法会被完整地保留并正常解析。例如,假设有一个名为include-test的页面,其内容如下:

{$year}年,//{$month}月{$day}日//

使用如下方式引用:

 [[include include-test |year=二零七七 |month=1 |day=**1**]]

最终呈现的结果是:

引用参数不能以]]结尾,也最好不要包含|这样的关键字。所以,如果你的引用参数里面有链接或者换行,最好在每一行后面加上@@@@来避免它被错误地解析。

在上面的代码块中,[[include…前有一个空格。这是因为[[code]]内的[[include]]也会被解析。这是Wikidot的刻意设计。

模块

ListPages(列出页面)

ListPages模块是一种通用且广泛使用的工具,用于选择并显示站点内的页面。该模块一般语法为:

[[module ListPages 属性…]]
模块主体
[[/module]]

如果你完全不添加属性和模块主体,ListPages模块将按从最新到最旧的顺序显示当前类别中的所有可见页面,这也是很多“炸代码”情况的原因。需要特别注意的是,模块主体不能包含[[code]][[HTML]]。如果包含这些标签,模块将完全无法工作。

属性

选择页面

属性属性名翻译含义
pagetype页面类型按页面类型选择
category类别按类别选择
tags标签按标签选择
parent父级按父页面选择
link_to链接到按反向链接选择
created_at创建时间按创建日期选择
updated_at更新时间按更新日期选择
created_by创建者按原作者选择
rating评分按评分选择
votes投票数按票数选择
offset偏移量从偏移页数后开始列出
range范围选择一系列页面
name名称按页面名称选择
fullname全名按全名选择
_<data-form-field-name>表单通过数据表单中某个字段的值进行选择
  1. pagetype可接受的值
    • normal(默认)指名称中不含下划线的页面。在Wikidot上,以下划线开头的页面是所谓”隐藏页面“,例如_template(全站默认模板页),其内容会被自动复制进每个_default分类的页面。大部分网站会锁定_template防止恶意破坏。
    • hidden表示以下划线开头的页面。
    • *表示所有页面,无论是否有下划线。
  2. category可接受的值
    • .(默认)表示当前的页面分类。
    • *表示所有页面分类。
    • 还可以是一个页面分类的列表,使用逗号或空格分隔,逻辑类似[[iftags]]。例如,-deleted -fragment表示过滤掉所有-deletedfragment分类的页面,_default wanderers则表示仅接受来自_defaultwanderers分类的页面。
  3. tags可接受的值
    • 默认没有属性。
    • -表示无标签页面,无论可见与否。
    • =表示与本页面具有任意一个相同可见标签的页面。
    • ==表示与本页面具有完全相同可见标签的页面。
    • 可以填入一个和category属性类似的列表,逻辑也类似:如果属性内容是tag1 tag2 tag3,那么有这三个标签中的任意一个的页面就会被选中。如果你希望选择的页面必须包括tag1,就使用+tag1
  4. parent可接受的值
    • 默认没有属性。
    • -表示没有父页面的页面。
    • =表示当前页面的同级页面(与当前页面有同样的父页面)。
    • -=表示与当前页面的父级不同。
    • .表示当前页面的子页面,即,将当前页面作为属性传入。
    • 否则,指定一个单独的fullname
  5. link_to可接受的值
  6. created_at可接受的值
    • =表示与当前页面创建于同一天。
    • yyyy.mm表示指定的年份和月份。
    • 可选择以><=<=>=<>作为前缀(默认值为=)。日期并非本地时间,而是协调世界时(格林威治标准时间)。
    • 也可以是last N hours/day/week/month,其中N是一个数字(默认为1),例如last 2 day表示选择过去两天里创建的所有页面。
  7. updated_at可接受的值
    • created_at一致。
  8. created_by可接受的值
    • =表示由当前页面的作者创建。
    • -=表示非当前页面作者创建。
    • 也可以指定一个用户名。
  9. rating可接受的值
    • n表示评分等于n的页面。
      • 可选择以><=<=>=<>作为前缀(默认值为=)。
    • =表示与当前页面评级相同的页面。
    • 当列出多个分类的页面时,如果某些分类在站点管理器中的评级类型设置为“+”或“+/-”,而其他分类设置为五星制,则按评级选择和排序可能无法正常工作。解决方法是列出并排序具有相同评级模式的分类下的页面。
  10. votes可接受的值
    • rating一致。
  11. offset可接受的值
    • before表示排序后直至当前页(不包括当前页)的页面。
    • after表示当前页面之后的页面(排序后的顺序)。
    • others是指当前页面以外的页面。
  12. name可接受的值
    • 输入现有页面的单个名称(指不含类别部分的名称),以选择给定类别的此特定页面。如果还选择了不同类别,也可选择不同类别的页面。你可以使用当前页面的数据表单字段。
    • =表示与当前页面名称完全相同的页面(仅在选择其他类别时才有意义)。
    • s%s*表示以给定字符“s”开头的所有页面。
  13. fullname可接受的值
    • 输入现有页面的单个页面完整名称,以精确选择此单个页面(你可以使用当前页面的数据表单字段)。
  14. _<data-form-field-name>可接受的值
    • 语法为 _data-form-field-name="数据表单值"

示例:[[module ListPages category="_default wanderers" rating=">15"]]会筛选出所有评分在15分以上的、_defaultwanderers分类的页面。

排序页面

筛选完页面后,你可能会希望按照某种顺序呈现它们。order属性是唯一一个负责排序的属性,它的语法如下:order="属性名 <desc>"。默认按某个属性升序排列,如果加上desc,就表示降序排列。还可以反复使用desc,例如desc desc仍然表示升序。

可用的属性有以下几种:

  • name:按页面名称排序。
  • fullname:按类别和页面名称排序。
  • title:按页面标题排序。
  • created_by:按页面发布者的用户名排序。
  • created_at:按创建日期排序(默认的排序方式)。
  • size:按页面字符数排序。
  • rating:按评分排序(如果不同分类的评分方式不同,可能无法正常工作)。
  • votes:按投票数排序。
  • revisions:按修订次数排序。
  • comments:按评论数量排序。
  • random:随机排序,60秒刷新一次。
  • _data-form-field-name:按数据表单中的某个字段排序。

分页显示

属性含义
limit最多抓取多少个页面。
perPage一次显示多少个页面。
reverse是否按相反顺序显示页面。
  1. limit可接受的值:最小为1的一个整数,是抓取页面数量的上限,默认无限制。
  2. perPage可接受的值:最小为1的一个整数,每页分页显示的项目数量。ListPages单次最多显示250项,默认显示20项。
  3. reverse可接受的值:yes,例如reverse="yes"表示在给定页面上按从后到前的顺序显示维基页面。

如果一页不能显示完全,ListPages会创建一个分页目录,其HTML结构类似于:

html


<div class="pager">
    <span class="pager-no">page 1 of 2</span>
    <span class="current">1</span>
    <span class="target"><a href="/new-main/date/2025.07/p/2">2</a></span>
    <span class="target"><a href="/new-main/date/2025.07/p/2">next »</a></span>
</div>

模块主体

ListPages的模块主体会不断重复,重复次数就是抓取到的页面的数量。我们以这样一个模块主体作为示例:

[[module ListPages separate="no" wrapper="no" limit="5"]]
  [[head]]
    [[ul id="u-myList"]]
  [[/head]]

  [[body]]
    [[li class="list-item"]]%%title_linked%% by (%%created_by%%)[[/li]]
  [[/body]]

  [[foot]]
    [[/ul]]
  [[/foot]]
[[/module]]

注意到[[ul]]idu-(代表user)开头的,这是因为如果你不使用u-开头的ID,Wikidot会在编译后自动给你加上u-。如果使用u-开头的ID,Wikidot则不再追究。这是为了防止和Wikidot网页的其它元素冲突。

其中,

  • separate这个属性表示是否要给每个[[body]]里的内容都单独套一个<div class="list-pages-item">。如果是no,那么无事发生;如果是yes,那么每抓取到一个页面,就会生成一个并列的<div class="list-pages-item">
    • 注意:separate设置为true时,每个页面将单独编译(从维基源文件转换为HTML)。而当它为false时,维基编译器只会对所有选定页面的组合源文件调用一次。因此,一些特定于页面的变量和结构(如[[iftags]])可能会产生不同的结果。当[[iftags]]separate属性设置为yes时,它将识别各个页面的标签;而当separate属性设置为no时,它将读取包含ListPages模块的主页标签。
  • wrapper表示是否要将整个模组放入一个<div class="list-pages-box">。默认值为yes
  • [[head]][[/head]]仅在最开始生成一次,它也可以写进属性,格式是prependLine="",且仅在separateyestrue)时才有效。
  • [[foot]][[/foot]]仅在最末尾生成一次,同样的,可以以appendLine=""的形式写进属性。仅在separateyes时才有效。

同样地,[[image :first …]]也只在separateyes时才有效,它代表显示附加到当前页面的第一张图片(如果没有图片则不显示)。

所以,上面的ListPages模块会被编译为这样:

列表暂不可用: 此 ListPages 查询尚未由只读迁移站支持。

你可能会注意到%%title_linked%%%%created_by%%,这两个是ListPages占位符,或者说变量名(variable-name)。在Wikidot编译时,变量名会被自动替换成对应页面的信息,这也是ListPages的主要功能。全部的可用变量名如下所示:

变量中文翻译含义
%%created_at%%创建时间页面创建日期
%%created_by%%创建者创建页面的用户
%%created_by_unix%%创建者(Unix)创建页面的用户的“Unix 化”名称,用于构建 URL
%%created_by_id%%创建者的ID创建者的Wikidot ID,一串数字
%%created_by_linked%%创建者链接创建页面的用户的图标和链接,相当于[[*User %%created_by%%]]
%%updated_at%%页面更新日期页面更新(编辑、标记、设置父页面)的日期
%%updated_by%%更新者更新页面的用户
%%updated_by_unix%%更新者(Unix)更新页面的用户的“Unix风格”名称,用于构建URL
%%updated_by_id%%更新者ID更新者的Wikidot ID,一串数字
%%updated_by_linked%%更新者链接更新页面的用户的图标和链接,相当于[[*User %%updated_by%%]]
%%commented_at%%最后评论时间上次评论日期
%%commented_by%%最后评论者上次发表评论的用户
%%commented_by_unix%%最后评论者(Unix)上次发表评论的用户的“Unix 化”名称,用于构建 URL
%%commented_by_id%%最后评论者的ID上次发表评论的用户的Wikidot ID,一串数字
%%commented_by_linked%%最后评论者链接指向最后评论用户的图标和链接,相当于[[*User %%commented_by%%]]
%%name%%页面名称不含类别的页面名称 无分类的页面名称
%%category%%页面分类页面类别(如有)
%%fullname%%页面全名如有类别,则为带有类别的页面名称
%%title%%标题页面标题
%%title_linked%%带链接的标题链接到以文本形式显示标题的页面(自定义域名也适用)的链接
%%parent_name%%父页面名称父级页面名称(不含分类) 无分类的父页面名称
%%parent_category%%父页面分类父页面类别(如有)
%%parent_fullname%%父页面全名父页面名称(如有类别则包含类别)
%%parent_title%%父页面标题父页面标题
%%parent_title_linked%%父页面链接以文本形式显示标题的父页面链接
%%link%%链接指向页面的URL(自定义域名不适用!)
%%content%%页面内容完整的页面内容
%%content{n}%%页面段落第n个段落,%%content{0}%%永远是空字符
%%preview%%预览页面的前200个字符
%%preview(n)%%页面预览(n)页面的前n个字符
%%summary%%内容摘要内容摘要
%%first_paragraph%%页面的第一段页面的第一段
%%tags%%标签页面可见标签(不以下划线开头)
%%tags_linked%%可见标签链接与系统关联的页面可见标签:page-tags/tag/{tag}
%%tags_linked|link_prefix%%带链接前缀的可见标签链接与 link_prefix{tag} 关联的页面可见标签
%%_tags%%%%_tags%%页面隐藏标签(以下划线开头)
%%_tags_linked%%隐藏标签链接与系统关联的页面隐藏标签:page-tags/tag/{tag}
%%_tags_linked|link_prefix%%带链接前缀的隐藏标签链接与link_prefix{tag}相关联的页面隐藏标签
%%form_data{name}%%表单数据{名称}如果存在,来自页面 数据表单 的字段值
%%form_raw{name}%%表单原始值{name}对于选择字段,如果有,则为保存在页面表单数据中的内部值
%%form_label{name}%%字段在数据表单中定义的标签(如有)如果有,则为在数据表单中定义的字段标签
%%form_hint{name}%%字段在数据表单中定义的提示信息(如有)如果存在,数据表单中定义的字段提示信息
%%children%%子页面子页面数量
%%comments%%评论数页面上的评论数量
%%size%%字数页面中的字符数(1汉字和1英文字符都算作1字符)
%%rating%%评分页面评分值(数字或星级,取决于站点管理器中的评分设置)
%%rating_votes%%评分票数页面受到的投票数
%%rating_percent%%五星评级的百分比数值仅五星评级的百分比值
%%revisions%%版本数量页面更新次数
%%index%%索引ListPages 输出中的页面索引 + 偏移量(1 到 %%total%%)
%%total%%总抓取数忽略限制的总抓取页面数量(可能高于 %%limit%%)
%%limit%%限制传递给ListPages的限制(若未传递则为空)
%%total_or_limit%%总页数或限制页数如果向模块传递了limit属性,%%total_or_limit%% 为 %%total%% 或 %%limit%% 中的较小值。
%%site_title%%站点标题当前站点标题
%%site_name%%站点名称站点的Wikidot Unix名称
%%site_domain%%当前站点的域名当前站点的活动域名

数据表单是Wikidot另外一个复杂的冷门但强大的功能,受篇幅所限,此处暂且不谈。可在wikidot-data-form-tech中学习如何创建并使用数据表单。

URL传参

你可以通过将属性指定为属性="@URL|默认值"作为属性值,然后在用于调用页面的URL后附加“/名称/值”,来在URL中传递任何属性。

如果URL不包含该属性的值,则使用默认值。其值中没有@URL的属性无法通过URL设置。默认值是可选的:如果仅使用属性@URL且未在URL上提供值,则该属性的行为就如同未设置一样。

使用URL属性主要有两种方式:(一)在另一页面上显式创建指向某个页面的链接;(二)在ListPages自身内部生成链接,这样它就能以不同的配置重新显示自身。下面是一个简单的示例:

[[module ListPages category="@URL|design"]]
%%name%% in category %%category%%
[[/module]]

这样,如果你访问有这个ListPages的页面时,在URL后添加{{/category/art}}(例如,页面本来是{{@@https://example.wikidot.com/test@@}},现在使用{{@@https://example.wikidot.com/test/category/art@@}}访问),那么这个ListPages就会表现为:

[[module ListPages category="art"]]
%%name%% in category %%category%%
[[/module]]

如果正常访问的话,它则表现为:

[[module ListPages category="design"]]
%%name%% in category %%category%%
[[/module]]

可以以类似的方式指定多个属性:{{@@http://example.wikidot.com/blog/created_at/2008.07/order/rating desc/limit/3@@}}。要传递带有(+/-)的标签,“+”需要用“%2b”进行编码。

注意:由于部分属性可以在请求的URL中传递,因此当页面中存在多个ListPages模块时,可能会发生冲突。最有可能出现的一种冲突是,当两个模块都需要分页时,点击其中一个模块的“下一页”也会影响到另一个模块。

为防止此类冲突,请使用{{urlAttrPrefix}}属性。这可以要求在URL中的属性名称前加上一段文本。例如,如果一个ListPages有属性{{urlAttrPrefix="listpages1"}},URL传参时就必须以{{@@…@@/listpages1_created_at/2008.07}}的方式传参,而{{@@…@@/created_at/2008.07}}就是无效的。如果能为每个ListPages实例设置不同的前缀,就可以避免任何冲突。

已废弃的功能

你可能会在某些场景发现这些变量,它们已经不再受Wikidot支持,但仍然能够工作。在此给出对应列表。

展开关闭
已被废弃被什么替代
skipCurrent="yes"range="others"
categories=category=
tag=tags=
tagTarget="pagename"%%tags_linked|/pagename/tag/%%
date=created_at=
order="dateCreatedAsc"order="created_at"
order="dateCreatedDesc"order="created_at desc"
order="dateEditedAsc"order="updated_at"
order="dateEditedDesc"order="updated_at desc"
order="titleAsc"order="title"
order="titleDesc"order="title desc"
order="ratingAsc"order="rating"
order="ratingDesc"order="rating desc"
order="pageLengthAsc"order="size"
order="pageLengthDesc"order="size desc"
rssTitle=rss=
%%linked_title%%%%title_linked%%
%%page_unix_name%%%%fullname%%
%%full_page_name%%%%fullname%%
%%page_name%%%%name%%
%%author%%%%created_by%%
%%author_edited%%%%updated_by%%
%%user_edited%%updated_by%%
%%date%%%%created_at%%
%%date_edited%%%%updated_at%%
%%description%%%%summary%%
%%short%%%%summary%%
%%text%%%%content%%
%%long%%%%content%%
%%body%%%%content%%

ListPages支持一种“默认格式”,在这种格式下,你无需指定任何模块主体,也无需使用[[/module]]。此功能已弃用,应避免使用。

ListDrafts(列出草稿)

语法:[[module ListDrafts pageType="<exists|notexists>"]]

列出网站上所有的草稿页面。exists表示已经存在的页面,但有未保存的草稿;noexists表示还不存在的页面。

CountPages(页面计数)

此模块和ListPages有相同的、负责筛选页面的属性,但唯一可用的变量名是%%total%%或者%%count%%(作用相同),也就是说它只负责统计页面数量。适用于一些轻量级场景。不能嵌套在ListPages内。

ListUsers(当前用户名)

一个完成度很低的模块,Wikidot声称此模块还在开发中。此模块唯一的使用方式是:

[[module ListUsers users="."]]
模块主体
[[/module]]

模块暂不可用: 此动态功能尚未由只读迁移站支持。

ListUsers要求一个唯一且必须的属性,属性的值也是唯一且必须的,即users="."。它负责抓取已经登录的用户名。和ListPages一样,模块主体不能包含

或[[html]]。

ListUsers有三个可用变量:{{%%number%%}}是用户的数字ID,{{%%name%%}}是小写无空格的用户名称,{{%%title%%}}则是正常的用户名。如果用户没有登录,该模块以及里面的内容不会被显示。

++ TagCloud(标签云)

此模块为带标签的页面创建可定制的标签云。尽管Wikidot声称可以实现3D标签云,但实测后发现这个功能已经报废了。

以下是属性列表:

[[collapsible show="展开" hide="关闭"]]

||~ 属性 ||~ 是否必填 ||~ 允许值 ||~ 默认值 ||~ 描述 ||
|| mode || 否 || 3d || none || 开启 3D 模式 ||
|| maxFontSize || 否 || 任何长度值(单位为 px、pt、em 或 %) || 300% || 最常见标签的字体大小 ||
|| minFontSize || 否 || 任何长度值(单位为 px、pt、em 或 %) || 100% || 最不常见标签的字体大小 ||
|| maxColor || 否 || 颜色定义(RRR、GGG、BBB,各自范围为 0-255) || 128,128,192 || 最常见标签的颜色 ||
|| minColor || 否 || 颜色定义(RRR、GGG、BBB,各自范围为 0-255) || 64,64,128 || 最不常见标签的颜色 ||
|| limit || 否 || 任何大于 0 的整数 || 50 || 应显示的标签数量 ||
|| target || 否 || 有效的页面名称 || system:page-tags || 链接应指向的目标页面名称 ||
|| category || 否 || 有效的类别名称 || none || 将标签(以及点击标签时显示的页面)限制在指定的页面类别中 ||
|| showHidden || 否 || true /yes || false || 显示隐藏标签,即以下划线(_)开头的标签 ||
|| urlAttrPrefix || 否 || 任何字符串 || none || 在每个标签生成的 URL 属性中添加给定字符串作为前缀;使该模块与 ListPages 和 PagesCalendar 模块更兼容 ||
|| skipCategoryFromUrl || 否 || true /yes || false || 默认情况下,若使用 category 属性,它也会作为属性添加到标签生成的 URL 中;若启用此选项,类别名称将被忽略 ||
|| width || 否 || 整数 || 300 || 设置 3D 标签云的宽度 ||
|| height || 否 || 整数 || 300 || 设置 3D 标签云的高度 ||

[[/collapsible]]

++ PageCalendar(页面日历)

PageCalendar模块会创建一个页面日历,该日历会显示每年和每月创建的页面数量。可以与ListPages配合使用。Wikidot声称此模块还在开发中。

||~ 属性 ||~ 是否必填 ||~ 允许值 ||~ 默认值 ||~ 描述 ||
|| category || 否 || 以逗号或空格分隔的类别名称,或用 "*" 表示整个 wiki,或 @URL || 当前类别 || 设置待处理页面的范围 ||
|| tags || 否 || 带有 + 和 - 修饰符的以逗号或空格分隔的标签名称,或 @URL || none || 列出用作页面选择标准的标签,标签前的 "+" 表示必填,"-" 表示 "不包含该标签",无修饰符的标签表示 "包含任意这些标签的页面";"@URL" 表示从 URL 中获取标签 ||
|| startPage 或 targetPage || 否 || 任何有效的 wiki 页面 || 当前页面 || 设置点击任意日期时将显示的页面 ||
|| urlAttrPrefix || 否 || 任何字母数字 || none || 用于通过 URL 传递给例如 ListPages 模块的属性前缀 ||

如果要将PageCalendar与ListPages一起使用,请确保两个模块中的{{urlAttrPrefix}}属性值相同。

此模块接受{{@URL}}值的属性(即允许URL传参),也允许使用与ListPages模块类似的默认值。

简单的示例:

[[code]]
[[module PageCalendar category="doc"]]
[[module ListPages category="doc" perPage="7" date="@URL" separate="false" prependLine="||~ Page||~ Date created||~ Created by ||"]]
|| %%linked_title%% || %%date%% || %%author%% ||
[[/module]]

PageTree(页面树)

以无序列表的形式列出某个父页面下的所有子页面。

展开属性列表关闭
属性是否必填允许值默认值描述
root页面名称字符串当前页面树形结构的顶层元素
showRoot"true""false"是否在列表顶部显示根元素?
depth大于 0 的整数 nnone限制列表的最大深度;n = "1" 仅显示根页面的子页面,n = "2" 显示子页面及其子页面等

Backlinks(反向链接)、WantedPages(待建页面列表)以及OrphanedPages(孤立页面列表)

没有属性,直接以[[module 模块名]]的形式使用。

使用{{@@[[module Backlinks]]@@}}显示一个通过{{@@[[[pagename]]]@@}}语法链接到此页面的列表。列表会被包裹在{{div.backlinks-module-box}}中。

Wikidot官方提示了此模块的用处:创建”软分类“(soft categories),即在页面中插入类似[[[category:need-update]]]这样的链接,然后在category:need-update这个页面使用此模块,就可以列出这个”假分类“下的所有页面。不过,用隐藏tag也能实现这一点,而且还可以被ListPages抓取到。

WantedPages模块列出所有不存在但有链接指向它们的页面,它也可以在每个页面底部的站点工具中被找到。OrphanedPages列出所有的没有父页面的页面。

Categories(各命名空间下的页面一览)

Categories模块是一种工具,用于显示网站内的分类及其页面。Wikidot声称此工具最终将被ListPages取代。

仅有的一个可选属性includeHidden默认值为false,可选择是否显示在列表中包含“隐藏”(以下划线开头)的页面。

Watchers(关注者)

此模块用于列出正在关注该页面的用户。仅有的一个可选属性noActions默认值为true,可选择是否显示”关注/取消关注此页面“的按钮。

Members(成员列表)

此模块用于列出站点成员。

属性是否必填允许值默认值描述
group"members" "admins" "moderators""members"将列表限制到指定组
showSince"no" or "false""yes" for group="members"不显示加入日期;仅对 group="members" 有效
order"userId", "userIdDesc", "joined", "joinedDesc", "name", "nameDesc""joined"按名称(字母顺序)、用户 ID 或加入日期对成员进行排序

例如,[[module Members group="admins"]]列出网站上所有的管理员。

Join(加入网站)

Join模块提供了一个操作按钮,当用户点击该按钮时,Join模块首先会确保用户拥有账户(并要求匿名用户创建账户),然后尝试让该用户成为网站成员。接受button="按钮文本"class="CSS类"两个属性。编译后,它会被包裹在.join-box里。

当你在你自己的网站或已经加入的网站上创建Join模块时,保存页面后你不会看到“加入”按钮。该按钮不显示是因为你已经是网站的成员,并且该模块不会为已成为网站成员的用户显示此按钮。

有两种方法可以查看非成员访问你的网站时按钮的显示效果:

  • 你可以编辑包含[[module Join]]的页面,然后预览该页面。
  • 你可以退出网站。页面刷新后,你将看到该按钮。然后你可以再次登录继续在网站上工作(届时你将看不到该按钮)。

SendInvitations(发送邀请)和WhoInvited(谁邀请的)

没有属性,直接以[[module 模块名]]的形式使用。

SendInvitations允许你发送一个电子邮件邀请,前提是网站启用了允许邀请。

WhoInvited查询特定成员是如何加入此网站的,并显示一系列邀请记录。

CSS(嵌入层叠样式表)

CSS模块允许您将CSS(层叠样式表)代码插入到维基页面中。语法:

[[module CSS]]
/* 在此插入CSS代码 */
[[/module]]

接受两个属性:如果使用[[module CSS show="true"]],CSS代码会以代码块的形式显示出来。disable="true"可以使CSS无效化。CSS模块会以<style>的形式被编译进页面的<head>里。模块内容不能为空,否则它将不会被编译为<style>标签。

NewPage(新建页面)

可以有以下属性:

展开关闭
属性是否必填允许值默认值描述
category页面类别的名称none通过在页面名称前添加类别名称来强制使用指定的页面类别:注意:不能为此使用 _default 类别。
template模板页面的名称none用作新页面模板的页面(或逗号分隔的页面列表)
size任何正整数30显示的输入字段的大小
button任何字符串"create page"创建页面按钮内显示的文本
format任何有效的正则表达式none强制输入值匹配所需格式
tags空格分隔的标签列表none自动向创建的页面添加指定标签
parent页面名称或 category:page 形式none自动为创建的页面添加父页面

自动保存功能的属性

属性是否必填允许值默认值描述
modeedit, save-and-refresh, save-and-goedit"edit" 会将你带到编辑器。"save-and-refresh" 会保存页面并刷新当前页面。"save-and-go" 会保存页面并跳转到该页面(不经过编辑器),除非传递了 goTo 属性
goTo有效的页面名称none指定自动保存页面后要跳转到的页面

任何用作模板(通过template属性传递)的页面都必须属于模板类别,即其名称应包含template:前缀,例如template:pagename。并且该页面必须已存在。

如果你选择多个模板(名称之间用逗号分隔),将显示一个额外的字段,要求为用户想要创建的页面选择一个模板。

如果你希望新页面符合给定的模式,可以使用format属性,配合正则表达式使用。例如:

  • 页面名称将恰好由5个数字组成:format="/^[0 - 9]{5}$/"
  • 一个简单的表达式,用于匹配有效的日期(并非100%准确,假设所有月份都有31天):format="/^[\d]{4}[- \/.](0[1 - 9]|1[012])[- \/.](0[1 - 9]|[12][0 - 9]|3[01])$/"

此模块可以创建隐藏页面(即名称以下划线“_”开头的页面)。有趣的是,2010年9月之前,此模块无法创建下划线开头的页面。Wikidot声称在反馈网站上,有人希望改变这种规则,并在其官方文档内提供了通往那个反馈页面的链接,呼吁人们去点赞。那是2010年的深秋时分,几位用户和Wikidot管理员在讨论区你来我往了十几条评论。现在,这个功能可以被正常使用了。

Clone(克隆)

复制当前站点或指定站点的部分或全部内容。执行克隆操作的用户将成为新站点的所有者(主管理员)。

有两个可选属性:source指定要克隆的站点二级域名,如果不指定或填入.则克隆当前站点。button属性设置克隆按钮上的文本。

Redirect(重定向)

重定向模块会向浏览器抛出一个301状态码,告诉网络浏览器请求另一个网页。

唯一且必填的属性destination是需要重定向的URL或者pagename。可以在页面URL的末尾输入noredirect/true阻止重定向。类似地,norender/true阻止整个页面的编辑,如果你因为某些原因把页面搞炸了可以通过这种方式打开编辑框。

ThemePreviewer(主题预览器)

该模块会显示网站上的可用主题列表(一个下拉栏),并允许在不进入站点设置的情况下预览主题。

允许一个可选属性noUi="true",效果是不显示下拉栏,直接加载URL中指定的CSS。theme_url属性设置要加载的CSS,例如[[module ThemePreviewer noUi="true" theme_url="http://d3g0gp89917ko0.cloudfront.net/v--3e3a6f7dbcc9/common--theme/base/css/style.css"]]会加载Wikidot默认的、没有任何版式的样式。

MailForm(邮件表单)

此模块可用于通过网络表单收集用户输入,并通过电子邮件接收已填写的表单。电子邮件可发送给任何已注册的Wikidot用户。简单来说,这是一个Wikidot提供的调查问卷模块。

属性是否必填允许值默认值描述
to用户名站点管理员以逗号分隔的 Wikidot 用户名列表
button任何字符串"send"发送按钮内显示的文本
format"csv"none选择表单数据序列化的替代格式
title文本"Wikidot.com - MailForm form data"包含已提交表单的电子邮件标题
successPage有效的页面名称none表单发送后,浏览器将重定向到指定页面。

to的名称不能包含空格:若要指定包含空格的用户名,需将每个空格替换为连字符或下划线。如果未指定“收件人”属性,电子邮件将发送给所有站点管理员。

模块主体([[module …]] … [[/module]])必须使用列表的语法,类似于:

# 字段 1 名称
 * 选项 1 名称:值1
 * 选项 1 名称:值2
  * 子选项 1 名称:值
# 字段 2 名称
 * …

允许的字段名称列表如下:

选项名称是否必填允许值默认值描述
title否,但推荐填写任何字符串field_name在左侧同一行显示的字段标题
typetext, textarea, select, checkboxtext输入字段的类型
size整数30输入字段的大小
default输入值none对于“text”或“textarea”字段,它只是显示在字段内的字符串;对于“select”字段,它必须是选项标签之一
hint任何文本none提示信息

|| rules |||||||| 验证规则,见下文 ||||||||

如果你的字段是select字段,你还必须为其提供选项。操作方法类似:

# 字段名称
 * title: 性别
 * type: select
 * default: male
 * options:
  * male: 男
  * female: 女
  * option_name: Displayed value

本模块提供了一种强大的方式来验证输入数据。要使用验证,请执行以下操作:

# 字段名称
 * title: Validated field
 * type: text
 * rules:
  * rule1_name: value
  * rule2_name: value
规则名称允许值描述
required任意值,例如 "true"标识该字段是否为必填项
minLength整数不允许字符串长度短于限制值
maxLength整数不允许字符串长度长于限制值
matchPerl 正则表达式检查值是否与表达式匹配,例如 /[a-z0-9]+/ 仅允许小写字母和数字
number任意值,例如 "true"检查值是否为数值
minValue数字为数值字段设置下限
maxValue数字为数值字段设置上限

PetitionAdmin(请愿)

PetitionAdmin模块允许你设置和管理在线网络请愿活动。似乎只有管理员可以发起请愿,普通成员只能参与请愿。

此功能似乎已经报废:在签署请愿后,会有一封确认邮件,但点击验证链接并不会让请愿签署人数增加。得,本来就没啥用的功能这下更没用了。

SiteGrid(站点网格)和FeaturedSite(特色站点)

SiteGrid模块能够在Wikidot上创建一个网站缩略图网格,当鼠标指针悬停在缩略图上时,会以弹出窗口的形式显示描述和一些详细信息。模块会随机对缩略图进行排序。它用于Wikidot主页上列出特色网站。

在该模块中,你必须提供一个网站名称列表,例如community(如果网址是community.wikidot.com),或者提供完整网址,例如community.wikidot.com或www.digistan.org(如果网站有自定义域名)。只有一个可选属性limit,限制从预定义列表中显示的缩略图数量。

例如:

[[module SiteGrid limit="20"]]
scp-wiki
scp-wiki-cn
scp-jp
backrooms-wiki-cn
[[/module]]

FeaturedSiteSiteGrid非常相似,但它仅显示一个维基站点缩略图,而且该缩略图要大得多。

Feed(RSS提要)

此模块负责导入RSS提要,由于这种技术已经过时,故不在此翻译,有感兴趣的可以去看原文:https://www.wikidot.com/doc-modules:feed-module

FrontForum(讨论区信息)

[[module FrontForum]]允许你爬取网站的论坛帖子,可以跨站使用。同时还支持RSS订阅(尽管在现代互联网已经没什么人会用这玩意了)。

属性是否必填允许值默认值描述
category以分号分隔的整数none论坛类别的数字 ID(可查看 URL 地址);可使用多个类别来创建资讯
feed字母数字none若存在此属性,将创建 RSS 订阅源,其文件名与该属性值相同
feedTitle字符串"sitename feed"订阅源的标题
limit数字20应显示的条目数量
offset数字0从开头跳过多少个条目?
fixRelativeLinkstruenone若你使用外部论坛的类别(如 Wikidot 资讯 / 更新日志等),此属性可修复论坛帖子的链接

category的值可以在讨论区的URL中被找到,例如SCP中分的“一般讨论区”连接是https://scp-wiki-cn.wikidot.com/forum/c-882982/,那么对于此分类,category就是882982;类似地,“基金会世界观”是882983,“单页讨论”是675245。这也是为什么此模块是少数能跨站使用的模块,因为Wikidot在技术上似乎并不在意每个讨论区分别属于哪个网站。

该模块支持一系列与ListPages类似的变量。

变量描述
%%title%%新闻条目的标题
%%linked_title%%/%% title_linked%%链接到原始论坛主题的新闻条目标题
%%link%%指向原始论坛主题的 URL
%%author%%显示主题的作者
%%date%%显示发布日期
%%date|format%%以自定义格式显示发布日期。支持 PHP 中 strftime 函数的大多数标记。
%%comments%%评论数量 = 主题帖子数 - 1
%%category%%主题所属的论坛类别(带链接)
%%description%%/%%short%%/%%summary%%新闻条目的简短摘要
%%content%%/%%text%%/%%long%%/%%body%%新闻条目的完整内容(帖子)

Comments(评论区)

在页面中插入评论区。如果访问者有足够的权限,评论区默认打开。可以通过设置 hideForm="true"属性来更改此设置。

属性是否必填允许值默认值描述
title文本字符串""显示评论区块的替代标题
hide"true""false"隐藏讨论区,需要用户点击才能显示
hideForm"true", "yes""false"默认不显示开放式输入表单,仅显示添加评论的链接
order"reverse", "forwards"forwards若设置为 "reverse",评论将按倒序显示,最新的在最上方

RecentPosts(最近的帖子)等

  • RecentPosts(最近的帖子):显示最近的帖子。没有属性和模组主体。
  • MiniRecentThreads(最近讨论串略表):显示最新的讨论串。列表项包含主题标题、开始日期和帖子数量。唯一的可选属性是limit,限制显示数量。
  • MiniActiveThreads(活跃的讨论串略表):以紧凑形式显示过去 7 天内最活跃的讨论串。会显示讨论串标题、起始日期和帖子总数。唯一的可选属性是limit
  • MiniRecentPosts(最近的帖子略表):以紧凑形式显示最新的帖子,唯一的可选属性是limit。有趣的是,Wikidot官方文档中,这个模块的介绍和MiniRecentThreads完全一致,可能是复制完了忘改了。

Rate(评分模块)

[[module Rate]]

一个冷知识是Rate是可以有模块主体的,甚至还有变量,调用方式为[[module Rate]]…[[/module]]。但只有五星制评分的页面可以这么做,其变量包括:

变量描述
%%rating%%显示评分数值
%%rating_votes%%显示投票数量
%%rating_percent%%以百分比形式显示总体平均评分(不含 '%' 字符)
%%rating_decimal%%显示五星评分的小数形式(例如 4.7)

但Up/Down评分制的页面无法使用变量和模组主体。

以下是Rate评分框的HTML结构:

html
<div class="page-rate-widget-box">
    <span class="rate-points">
     评分:&nbsp;
     <span class="number prw54353">0
     </span>
    </span>
    <span class="rateup btn btn-default">
     <a title="我喜欢" href="javascript:;" onclick="WIKIDOT.modules.PageRateWidgetModule.listeners.rate(event, 1)">
     +
     </a>
    </span>
    <span class="ratedown btn btn-default">
     <a title="我不喜欢" href="javascript:;" onclick="WIKIDOT.modules.PageRateWidgetModule.listeners.rate(event, -1)">
     –
     </a>
    </span>
    <span class="cancel btn btn-default">
     <a title="取消我的投票" href="javascript:;" onclick="WIKIDOT.modules.PageRateWidgetModule.listeners.cancelVote(event)">
     x
     </a>
    </span>
</div>

RatedPages(评分页面列表)

此模块显示评分最高的页面。也可以指定一个类别来限制结果。Wikidot声称此模块还在开发中但应该能正常运行,未提及其功能实际上被ListPages完全替代。

属性是否必填允许值默认值描述
category有效的类别名称none将报告的页面限制在单个类别中
order"date-created-asc", "date-created-desc", "rating-asc", "rating-desc""rating-desc"排序方式
minRating整数none将结果限制为评分大于或等于此限制的页面
maxRating整数none将结果限制为评分小于或等于此限制的页面
limit正整数10限制显示的页面数量
comments"true"/"yes"none同时显示评论数量

Gallery(画廊)

准确来说这不是一个模块,因为它的语法不以[[module …]]开头。[[gallery]]被用于插入一系列图片,语法如下:

[[gallery size="image-size"]]
: image-source1 attribute1="value1" attribute2="value2" …
: image-source2 attribute1="value1" attribute2="value2" …
…
[[/gallery]]
属性允许值默认值描述
size"square", "thumbnail", "small", "medium""thumbnail"设置预览图片的尺寸,此选项仅对本地图片或Flickr图片有效
order"name", "name desc", "created_at", "created_at desc""name"设置排序方式
viewer"false", "no", "true", "yes""yes"禁用LightBox查看器

order属性还接受以下已弃用的值:nameDescdateAddedDescdateAdded。为了与 ListPages 模块保持一致,它还接受以下值:name desc desccreated_at desc desc(含义与不带 desc desc 时相同)。

如果在调用[[gallery]]标签时未提供图片列表,它将自动显示当前页面附加的图片文件的缩放图像(缩略图)(默认情况下,图库仅显示图片,不包括 .pdf 和 .ps 文档)。

如果在调用[[gallery]]时提供了图片列表,则仅显示这些图片。在这种情况下,图片源不能是 URL。允许的 “每张图片属性” 有:

  • link:URL或维基页面名称(为符合Flickr条款,此属性对Flickr图片无效)
  • alt:图片不可用时的替代文本

要使文档在新窗口中打开,适用与单个图片相同的规则。

默认情况下,图库使用 LightBox 查看图片。这意味着,如果你点击图库中的图片,将弹出一个非常美观2的弹窗,你可以在不重新加载页面/打开新标签页或窗口的情况下向前/向后滚动图片。要禁用 LightBox 查看,请使用以下参数:[[gallery viewer="no"]][[gallery viewer="false"]]

FlickrGallery(Flickr画廊)

与Flickr有关。此功能似乎已经由于Flickr的API变更而报废。

展开属性列表关闭
属性是否必填允许值默认值描述
userName任何有效的Flickr用户名none将结果限制为单个用户
tags标签none以逗号分隔的标签列表
tagMode"any", "all""any"应用OR、AND进行标签选择
sort"date-posted-asc"、"date-posted-desc"、"date-taken-asc"、"date-taken-desc"、"interestingness-desc"、"interestingness-asc"、"relevance""date-posted-desc"设置排序顺序
photosetId任何有效的相册IDnone从相册获取图片
groupId任何有效的群组名称none从指定群组获取图片
groupUrl群组主页的URL地址none从指定群组获取图片
perPage1到100之间的任何数字30每页显示多少张照片
limitPages任何正数none限制可导航的页数;如果完全不想导航页面也很有用(limitPages="1")
size"square" - 75x75像素、"thumbnail" - 最长边100像素、"small" - 最长边240像素、"medium" - 最长边500像素"thumbnail"要显示的图片尺寸
disableBrowsing"yes"/"true"none禁用点击时在叠加窗口中显示图片
contentTypephotos, screenshots, other, photos-screenshots, screenshots-other, photos-other, all"all"设置从Flickr检索的图片类型

Files(附件)

此模块列出了附加到页面的所有文件。没有属性和模组主体,只需[[module Files]]即可使用。

Search(搜索)等

  • Search(搜索)
  • SearchAll(全Wikidot搜索)
  • SearchUsers(搜索用户)

上述三个模块全部报废🎉。

SiteChanges(页面变更)

列出对站点内容所做的最新更改。支持的更改类型:

  • 新建页面
  • 页面内容更改(编辑源代码或标题)
  • 页面重命名或移动
  • 元数据更改(父页面)
  • 附加文件

无属性,无模组主体。使用[[module SiteChanges]]即可。

不受支持的模块

  • AdSenseUnit(广告块):与Google AdSense相关,在2010年被弃用。
  • MembershipApply(申请站点成员):被[[module Join]]替代。
  • MembershipByPassword(通过密码申请站点成员):被[[module Join]]替代。
  • Pages(页面):被[[module ListPages]]替代。
  • ChildPages(子页面):被[[module ListPages]]替代。
  • PagesByTag(按标签筛选页面):被[[module ListPages]]替代。这个模块可以一次显示所有的页面,而不是像ListPages一样有250的单页显示上限。它在绝大部分Wikidot站点上仍然可以正常运行,但由于Wikidot疑似定向优化的bug,2025年所有的以scp开头的Wikidot网站都无法使用此模块。
  • NextPage(下一页面):被[[module ListPages]]替代。
  • PreviousPage(上一页面):被[[module ListPages]]替代。
  • ManageSite(管理网站):网站的控制面板页面(/_admin)包含此模块。在任何页面上使用[[module ManageSite]]都会将该页面重定向到/_admin。非管理员进入控制面板会收到权限错误提示。

被隐藏的模块

这些模块虽然存在,但官方文档中没有它们。大部分都用于Wikidot的某些特定功能。

一个冷知识是:www.wikidot.com是一个和其它Wikidot网站(本质上)没有任何不同的Wikidot站点,如同SCP中文分部的二级域名是scp-wiki-cn一样,这个网站的二级域名就叫www。首页上创建账号的功能,以及用户信息页面都是靠模块实现的,例如:

此外,还有几个模块是被隐藏的:

嵌套使用

你可能会注意到,[[include]]的引用参数{$parameter}可以保留完整的Wikidot语法。实际上,它几乎可以保留任何东西。这是一个极具灵活性的设计,我们来看一些示例:

CSS版式“预设选项”

假设有一个页面test-1,内容如下:

[[module CSS]]

/* {$option}/

.myclass {
    color: red;
}

/{$option} */

[[/module]]

在引用此页面时,如果你以[[include test-1 |option=*]]的格式引用,那么{$option}就会被替换为*,页面内容也会变成:

css
[[module CSS]]

/* */

.myclass {
    color: red;
}

/* */

[[/module]]

在引用之前,CSS模块里是一段很长的注释,而引用之后注释就“闭合”了,从而让中间的CSS代码变得有效。模块里的引用参数也可以工作。

有些CSS版式的引用参数需要设置为a,这是因为它们将引用参数放在了[[iftags]]的“a”那里;还有一些是,利用了Wikidot的注释语法[!-- --]

引用参数也可以被用于[[iframe]]的URL中,从而通过URL向<iframe>传参。当然,它也可以用于各种模块的属性中,或者HTML内的脚本值。你可以自己尝试一些奇特的引用方式。

ListPages的嵌套

有些模块也可以互相嵌套。例如,ListPages与CSS嵌套:

[[module ListPages limit="5" separate="no"]]

[[%%content{0}%%module CSS]]

.page-%%index%%::before {
    content:' %%name%% ';
}

[[%%content{0}%%/module]]

[[span class="page-%%index%%"]]%%rating%%[[/span]]

[[/module]]

由于Wikidot的某些bug,你必须使用[[%%content{0}%%module CSS]]才能保证CSS模块正常运行。这创建了5个类,分别是.page-1.page-5,并且每个类的::before伪元素内容都是它们的页面名称。

[[#ifexpr]]等表达式虽然可以嵌入ListPages,例如[[#expr (%%rating_votes%%+%%rating%%)/2/%%rating_votes%%*10000%10001/100]]可以计算页面的Upvote率,但却无法被嵌入CSS模块。不过,你可以使用CSS的counter功能来实现一些简单的累计计算。有关这方面的高级运用,建议阅读Sharia VanillaSharia Vanilla撰写的这篇这篇教程

此外,ListUsers可以被通过类似的方式嵌入ListPages中。

虽然ListPages里不能使用[[html]],但可以使用[[iframe]][[embed]]并正常将变量嵌入。也可以试着将其他模块互相嵌套。

Footnotes
  1. 1.为什么上面用“and”这里用“&”?我想不通。
  2. 2.官方文档原文为very nice looking
  3. 3.原文:The module you have used does not exist, but you can play Tetris instead :)
页面版本:⁨0⁩, 最后编辑于: ⁨2025/8/1 11:19:12⁩ (⁨⁨411⁩ 日前⁩), 现时评分: 125