Wikidot模块参考手册

源页面
2025年8月1日
修订 5
评分
79
↑ 77
↓ 0
支持率
100%
总票数 77
Wilson 95% 下界
95.2%
在相同票数下更稳健的支持率估计
争议指数
0.000

评分趋势

按周聚合
加载图表中...

最近修订

1 / 2
SOURCE_CHANGED
21 天前
SOURCE_CHANGED
1 个月前
SOURCE_CHANGED
1 个月前

最近投票

1 / 8
2025-08-26
2025-08-25
2025-08-20
2025-08-18
2025-08-16
2025-08-08
2025-08-08
2025-08-04
2025-08-04
2025-08-03

相关页面

暂无推荐

页面源码

[[include :scp-wiki-cn:theme:mox]] [[module CSS]] #main-content tt {     background: #e4ebec;     padding: 0.1rem 0.1rem;     color: #486a6e;     margin: 0rem 0.4rem; } #main-content :is(p, ul, tr) {     line-height: 2rem;     font-size: 1rem; } .code {     width: min(40rem, 90%);     margin: 0 auto;     background-image: linear-gradient(180deg, var(--mox-layer-dark-1) 1.7em, var(--mox-layer-dark-2) 1.7em, var(--mox-layer-dark-3) 100%); } .code pre {     filter: invert(1) hue-rotate(120deg) brightness(1.5) saturate(0.6); } div#toc-list a::before {     content: '└';     color: var(--mox-layer-light-3);     display: inline-block;     margin: -0.3em 0.4em 0em -0.6em;     transform: translate(-0.2em, 0.2em) scale(2, 2); } div#toc-list {     display: block;     line-height: 1.2rem;     font-size: 0.9rem; } .featured-site-grid-box .container {     overflow: hidden;     display: flex ;     padding: 1rem 1rem;     justify-content: center; } [[/module]] [[>]] [[module rate]] [[/>]] 本页面是[[[https://www.wikidot.com/doc-modules:start|对应的Wikidot官方文档]]]的一个简要的中文版本,翻译了绝大部分有关Wikidot模块的内容。尽管有相当多的模块十分鸡肋,Wikidot的模块系统可待发掘的地方还有很多。 +* 译名和术语参考 * {{category}}:页面分类,或命名空间。每个页面默认的分类是{{_default}}。 * {{pagename}}:页面名称。这不是指页面的标题。每个Wikidot页面的URL格式为:{{@@https://sitename.wikidot.com/category:pagename@@}},{{pagename}}指的是{{category:}}之后的部分。它和{{category}}都必须仅由小写英文字母、连接符和数字组成。{{category:pagename}}被称为{{fullname}}(完整页面名称)。 * {{sitename}}:二级域名。 * {{attributes}}:属性,或者参数。 +* 什么是Wikidot模块 是类似{{@@[[module 模块名]]@@}}或{{@@[[module 模块名]] ... [[/module]]@@}}的结构,这样的模块调用Wikidot本身的API来爬取网站的内容。你最常用到的{{@@[[module Rate]]@@}}就是一个模块,其中{{Rate}}就是模块名。 “Module”一词并没有官方的中文翻译,这里暂且译为“模块”,不过其实也可以翻译成“模组”,看你比较喜欢哪个称呼了。 根据官方文档,模块分为以下几种: * **列表和分类**(Listing and categorizing),例如ListPages、Categories等列出网站内容的模块。 * **用户和成员**(Users, members),例如Members、Join(加入网站)这样有关Wikidot用户的模块。 * **论坛和讨论**(Forum &[[footnote]] 为什么上面用“and”这里用“&”?我想不通。 [[/footnote]] discussion),有关论坛功能的模块。 * **新闻与订阅源**(News & feeds),只包括Feed和FrontForum。 * **页面评分**(Page rating),只包括Rate和RatedPages。 * **图片、画廊和附件**(Photos, galleries, files),顾名思义。 * **搜索**(Searching),与Wikidot搜索功能有关,基本不可用。 * **变更**(Changes),仅包括SiteChanges一个模块。 * **杂项**(Miscellaneous),例如ThemePreviewer、FeaturedSite等,值得注意的是,Wikidot将CSS模块也分在此类。 * **已废弃**(Deprecated),包括一些不再被Wikidot支持(但不一定无法使用)的模块。 一般来说,模块的使用方式为: [[code]] [[module 模块名 属性1="属性值" 属性2="属性值" ...]] %%变量名%% 其它内容 [[/module]] [[/code]] 其中,{{[[module 模块名 属性1="属性值" 属性2="属性值" ...]]}}是开始标签,{{[[/module]]}}是闭合标签。并不是所有模块都需要闭合标签。也并不是所有模块可以设置属性和变量,具体见下面的模块列表。 我们下面开始逐个讲解每个模块。 [[toc]] + 在此之前你可能需要了解的高级Wikidot语法 接下来的介绍会涉及Wikidot的一些很实用的高级语法,虽然它们不属于模块,但经常配合模块使用,有必要了解。 ++ @@[[html]]、[[iframe]]和[[embed]]@@ 这三个标签都用于引入HTML代码。然而,它们的作用方式略有不同。 首先,**{{@@[[html]] ... [[/html]]@@}}**内可以插入任意的HTML代码,但开始和结束标签必须独占一行。即,类似这样的语法是无效的: [[code type="HTML"]] [[html]] <p>Hello World!</p> [[html]] [[/code]] 为使Wikidot解析{{@@[[html]]@@}},你必须以如下形式使用它: [[code type="HTML"]] [[html]] <p>Hello World!</p> [[html]] [[/code]] Wikidot会将这种HTML代码以{{<iframe>}}的形式呈现出来。也就是说,你可以自由插入JavaScript脚本,但你没办法用它更改页面上的内容;你只能用它更改{{@@[[html]]@@}}以内的东西。由于HTML被储存在wdfiles.com,根据同源策略,想让它访问父页面的内容也是不可能的。尽管如此,有一些奇特的技巧可以实现将{{@@[[html]]@@}}里的属性向外传递,例如[[[component:passcode|这个]]]。 {{@@[[html]]@@}}难以被嵌入行内。如果你希望在行内嵌入{{<iframe>}},可以使用**{{@@[[embed]]@@}}**。但{{@@[[embed]]@@}}只接受{{<iframe>}}标签,如果你在其中插入任何其它的HTML元素,Wikidot将会展示一个报错信息。甚至,尽管Wikidot自己的文档中提供了在{{@@[[embed]]@@}}中插入{{<script>}}的例子,如果你亲自去尝试就会发现Wikidot仍然会报错。例如: [[code type="HTML"]] [[embed]]<p>Hello World!</p>[[/embed]] [[/code]] 最终会被解析为: [[div style="    border: solid 1px #b10000;     color: #b60000;     padding: 0rem 2rem;"]] Sorry, no match for the embedded content. [[/div]] 唯一可行的使用{{@@[[embed]]@@}}的方式是这样的: [[code type="HTML"]] [[embed]]<iframe src="https:example.com"></iframe>[[/embed]] [[/code]] **{{@@[[iframe]]@@}}**可以直接引入{{<iframe>}}标签。它的语法是{{@@[[iframe URL attributes]]@@}},最终被解析为{{<iframe src="URL" attributes></iframe>}}。其中,{{attributes}}支持如下属性:{{frameborder}}({{@@0@@}}或者{{1}}),{{align}}({{left}},{{right}},{{top}},{{bottom}},{{middle}}),{{height}}, {{width}},{{scrolling}}({{yes}}或者{{no}}),{{class}},{{style}}。 ++ @@[[#expr]]、[[#if]]和[[#ifexpr]]@@ 即判断表达式。{{@@[[#expr]]@@}}用于计算数值,{{@@[[#ifexpr]]@@}}则根据计算结果判断其应该被解析的内容。这两个标签允许使用数学/逻辑语法以及3个内置函数({{abs}}、{{min}}、{{max}}),长度最大可为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]]@@}} 其中,{{+}}或者没有前缀表示该标签必须存在,{{-}}表示该标签必须不存在。对于下面的内容: [[code]] [[iftags +tag1 -tag2 tag3]] 可能显示的内容 [[/iftags]] [[/code]] 如果一个页面有“tag1”和“tag3”这俩个标签,并且没有“tag2”这个标签,那么页面上就会出现“可能显示的内容”。如果以上两个条件有任何一条没被满足,这行字就不会出现。 ++ @@[[date]]@@ **{{@@[[date]]@@}}**用于显示格式化的日期。语法为:{{@@[[date 时间戳 <format="格式<|agohover>">]]@@}} 其中,“时间戳”是UNIX时间,即1970年1月1日与所需日期之间的秒数。“格式”是Wikidot的占位符文本,默认为{{%e}},即类似[[date 0]]这样的时间格式。{{%Y}},{{%m}},{{%d}}分别表示年、月、日、英文月份,例如{{@@[[date 0 format="%Y年%m月%d日"]]@@}}会被显示为[[date 0 format="%Y年%m月%d日"]]。完整的占位符列表如下所示(基本上与PHP strftime相同): [[collapsible show="打开表格" hide="关闭表格"]] ||~ 占位符 ||~ 描述 ||~ 示例 || ||%a ||3字母星期名称缩写||Mon|| ||%A ||英文星期全称||Monday|| ||%b ||3字母月份缩写||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|| ||%p ||AM或PM||PM|| ||%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|| [[/collapsible]] 如果属性里有{{agohover}},例如{{@@[[date 1145141919 format="%Y年的那事|agohover"]]@@}},把鼠标悬浮在上面就会出现一个提示框,显示从[[date 1145141919 format="%Y年的那事|agohover"]]之后过去了多少天。 ++ @@[[include]]@@ **{{@@[[include]]@@}}**用于导入其它的页面。语法为:{{@@[[include 页面名称 |属性1=属性内容 |属性2=属性内容...]]@@}}。 例如,导入插图方块的方式为{{@@[[include component:image-block |name=(URL) |caption=描述]]@@}}。在此格式中,{{name}}与{{caption}}即为引用参数,而{{|}}用于分隔属性。不同属性允许换行,但一个引用参数内部的换行无法被识别。最终,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}}的页面,其内容如下: [[code]] {$year}年,//{$month}月{$day}日// [[/code]] 使用如下方式引用: [[code]]  [[include include-test |year=二零七七 |month=1 day=**1**]] [[/code]] 最终呈现的结果是: [[div class="modal"]] 二零七七年,//1月**1**日// [[/div]] 在上面的代码块中,{{@@[[include...@@}}前有一个空格。这是因为{{@@[[code]]@@}}内的{{@@[[include]]@@}}**也会被解析**。这是Wikidot的刻意设计。 + 模块 ++ ListPages(列出页面) ListPages模块是一种通用且广泛使用的工具,用于选择并显示站点内的页面。该模块一般语法为: [[code]] [[module ListPages 属性...]] 模块主体 [[/module]] [[/code]] 如果你完全不添加属性和模块主体,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> || 表单 || 通过数据表单中某个字段的值进行选择 || # {{pagetype}}可接受的值  * {{normal}}(默认)指名称中不含下划线的页面。在Wikidot上,以下划线开头的页面是所谓”隐藏页面“,例如{{_template}}(全站默认模板页),其内容会被自动复制进每个{{_default}}分类的页面。大部分网站会锁定{{_template}}防止恶意破坏。  * {{hidden}}表示以下划线开头的页面。  * {{*}}表示所有页面,无论是否有下划线。 # {{category}}可接受的值  * {{.}}(默认)表示当前的页面分类。  * {{*}}表示所有页面分类。  * 还可以是一个页面分类的列表,使用逗号或空格分隔,逻辑类似{{@@[[iftags]]@@}}。例如,{{-deleted -fragment}}表示过滤掉所有{{-deleted}}和{{fragment}}分类的页面,{{_default wanderers}}则表示仅接受来自{{_default}}和{{wanderers}}分类的页面。 # {{tags}}可接受的值  * 默认没有属性。  * {{-}}表示无标签页面,无论可见与否。  * {{=}}表示与本页面具有任意一个相同可见标签的页面。  * {{==}}表示与本页面具有完全相同可见标签的页面。  * 可以填入一个和{{category}}属性类似的列表,逻辑也类似:如果属性内容是{{tag1 tag2 tag3}},那么有这三个标签中的任意一个的页面就会被选中。如果你希望选择的页面必须包括{{tag1}},就使用{{+tag1}}。 # {{parent}}可接受的值  * 默认没有属性。  * {{-}}表示没有父页面的页面。  * {{=}}表示当前页面的同级页面(与当前页面有同样的父页面)。  * {{-=}}表示与当前页面的父级不同。  * {{.}}表示当前页面的子页面,即,将当前页面作为属性传入。  * 否则,指定一个单独的{{fullname}}。 # {{link_to}}可接受的值  * 输入现有页面的单个全名,以选择链接到该页面的页面(只识别使用{{@@[[[pagename]]]@@}}语法的页面)。{{.}}表示链接到当前页面的页面。 # {{created_at}}可接受的值  * {{=}}表示与当前页面创建于同一天。  * {{yyyy.mm}}表示指定的年份和月份。  * 可选择以{{>}}、{{<}}、{{=}}、{{<=}}、{{>=}}、{{<>}}作为前缀(默认值为{{=}})。日期并非本地时间,而是协调世界时(格林威治标准时间)。  * 也可以是{{last N hours/day/week/month}},其中{{N}}是一个数字(默认为1),例如{{last 2 day}}表示选择过去两天里创建的所有页面。 # {{updated_at}}可接受的值  * 与{{created_at}}一致。 # {{created_by}}可接受的值  * {{=}}表示由当前页面的作者创建。  * {{-=}}表示非当前页面作者创建。  * 也可以指定一个用户名。 # {{rating}}可接受的值  * {{n}}表示评分等于n的页面。   * 可选择以{{>}}、{{<}}、{{=}}、{{<=}}、{{>=}}、{{<>}}作为前缀(默认值为{{=}})。  * {{=}}表示与当前页面评级相同的页面。  * 当列出多个分类的页面时,如果某些分类在站点管理器中的评级类型设置为“+”或“+/-”,而其他分类设置为五星制,则按评级选择和排序可能**无法正常工作**。解决方法是列出并排序具有相同评级模式的分类下的页面。 # {{votes}}可接受的值  * 与{{rating}}一致。 # {{offset}}可接受的值  * {{before}}表示排序后直至当前页(不包括当前页)的页面。  * {{after}}表示当前页面之后的页面(排序后的顺序)。  * {{others}}是指当前页面以外的页面。 # {{name}}可接受的值  * 输入现有页面的单个名称(指不含类别部分的名称),以选择给定类别的此特定页面。如果还选择了不同类别,也可选择不同类别的页面。你可以使用当前页面的数据表单字段。  * {{=}}表示与当前页面名称完全相同的页面(仅在选择其他类别时才有意义)。  * {{s%}}或{{s*}}表示以给定字符“s”开头的所有页面。 # {{fullname}}可接受的值  * 输入现有页面的单个页面完整名称,以精确选择此单个页面(你可以使用当前页面的数据表单字段)。 # {{_<data-form-field-name>}}可接受的值  * 语法为{{ _data-form-field-name="数据表单值"}}。 示例:{{[[module ListPages category="_default wanderers" rating=">15"]]}}会筛选出所有评分在15分以上的、{{_default}}或{{wanderers}}分类的页面。 ++++ 排序页面 筛选完页面后,你可能会希望按照某种顺序呈现它们。{{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 || 是否按相反顺序显示页面。 || # {{limit}}可接受的值:最小为1的一个整数,是抓取页面数量的上限,默认无限制。 # {{perPage}}可接受的值:最小为1的一个整数,每页分页显示的项目数量。ListPages单次最多显示250项,默认显示20项。 # {{reverse}}可接受的值:{{yes}},例如{{reverse="yes"}}表示在给定页面上按从后到前的顺序显示维基页面。 如果一页不能显示完全,ListPages会创建一个分页目录,其HTML结构类似于: [[code type="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> [[/code]] ++++ 模块主体 ListPages的模块主体会不断重复,重复次数就是抓取到的页面的数量。我们以这样一个模块主体作为示例: [[code]] [[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]] [[/code]] 注意到{{[[ul]]}}的{{id}}是{{u-}}(代表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="@@...@@"}},且仅在{{separate}}为{{yes}}({{true}})时才有效。 * {{[[foot]]@@...@@[[/foot]]}}仅在最末尾生成一次,同样的,可以以{{appendLinee="@@...@@"}}的形式写进属性。仅在{{separate}}为{{yes}}时才有效。 同样地,{{@@[[image :first ...]]@@}}也只在{{separate}}为{{yes}}时才有效,它代表显示附加到当前页面的第一张图片(如果没有图片则不显示)。 所以,上面的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]] 你可能会注意到{{%%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%% || 当前站点的域名 || 当前站点的活动域名 || * 所有的{{%%..._at%%}}(例如{{%%created_at%%}})都可以使用和{{@@[[date]]@@}}相同的日期占位符,格式为{{%%..._at|<modifier>%%}}。例如,{{%%created_at|%Y.%m.%d%%}}就会以{{%Y.%m.%d}}的格式输出。 * {{%%tags_linked%%}}可以指定链接到的页面,并不一定是默认的标签总览页({{system:page-tags}})。例如,{{%%tags_linked|interesting-list/category/%%}}就会连接到{{/interesting-list/category/<Tag名称>}},甚至可以连到其它Wikidot站点:{{@@%%tags_linked|http://myothersite.wikidot.com/see-also/tag/%%@@}}。此外,{{%%tags_linked|%%}}会直接连到名为{{<Tag名称>}}的页面,但由于Tag支持中文而页面名称必须是英文字符,所以不推荐这种写法。 数据表单是Wikidot另外一个复杂的冷门但强大的功能,受篇幅所限,此处暂且不谈。 ++++ URL传参 你可以通过将属性指定为{{属性="@URL|默认值"}}作为属性值,然后在用于调用页面的URL后附加“/名称/值”,来在URL中传递任何属性。 如果URL不包含该属性的值,则使用默认值。其值中没有@URL的属性无法通过URL设置。默认值是可选的:如果仅使用属性{{@URL}}且未在URL上提供值,则该属性的行为就如同未设置一样。 使用URL属性主要有两种方式:(一)在另一页面上显式创建指向某个页面的链接;(二)在ListPages自身内部生成链接,这样它就能以不同的配置重新显示自身。下面是一个简单的示例: [[code]] [[module ListPages category="@URL|design"]] %%name%% in category %%category%% [[/module]] [[/code]] 这样,如果你访问有这个ListPages的页面时,在URL后添加{{/category/art}}(例如,页面本来是{{@@https://example.wikidot.com/test@@}},现在使用{{@@https://example.wikidot.com/test/category/art@@}}访问),那么这个ListPages就会表现为: [[code]] [[module ListPages category="art"]] %%name%% in category %%category%% [[/module]] [[/code]] 如果正常访问的话,它则表现为: [[code]] [[module ListPages category="design"]] %%name%% in category %%category%% [[/module]] [[/code]] 可以以类似的方式指定多个属性:{{@@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支持,但仍然能够工作。在此给出对应列表。 [[collapsible show="展开" hide="关闭"]] ||~ 已被废弃 ||~ 被什么替代 || || 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%% || [[/collapsible]] ListPages支持一种“默认格式”,在这种格式下,你无需指定任何模块主体,也无需使用{{[[/module]]}}。此功能已弃用,应避免使用。 ++ ListDrafts(列出草稿) 语法:{{@@[[module ListDrafts pageType="<exists|notexists>"]]@@}} 列出网站上所有的草稿页面。{{exists}}表示已经存在的页面,但有未保存的草稿;{{noexists}}表示还不存在的页面。 ++ CountPages(页面计数) 此模块和ListPages有相同的、负责筛选页面的属性,但唯一可用的变量名是{{%%total%%}}或者{{%%count%%}}(作用相同),也就是说它只负责统计页面数量。适用于一些轻量级场景。不能嵌套在ListPages内。 ++ ListUsers(当前用户名) 一个完成度很低的模块,Wikidot声称此模块还在开发中。此模块唯一的使用方式是: [[code]] [[module ListUsers users="."]] 模块主体 [[/module]] [[/code]] [[module ListUsers users="."]] 例如,你的用户名是%%title%%,ID是%%number%%。 [[/module]] ListUsers要求一个唯一且必须的属性,属性的值也是唯一且必须的,即{{users="."}}。它负责抓取已经登录的用户名。和ListPages一样,模块主体不能包含[[code]]或[[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]] [[/code]] ++ PageTree(页面树) 以无序列表的形式列出某个父页面下的所有子页面。 [[collapsible show="展开属性列表" hide="关闭"]] ||~ 属性 ||~ 是否必填 ||~ 允许值 ||~ 默认值 ||~ 描述 || || root || 否 || 页面名称字符串 || 当前页面 || 树形结构的顶层元素 || || showRoot || 否 || "true" || "false" || 是否在列表顶部显示根元素? || || depth || 否 || 大于 0 的整数 n || none || 限制列表的最大深度;n = "1" 仅显示根页面的子页面,n = "2" 显示子页面及其子页面等 || [[/collapsible]] ++ 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(层叠样式表)代码插入到维基页面中。语法: [[code]] [[module CSS]] /* 在此插入CSS代码 */ [[/module]] [[/code]] 接受两个属性:如果使用{{@@[[module CSS show="true"]]@@}},CSS代码会以代码块的形式显示出来。{{disable="true"}}可以使CSS无效化。CSS模块会以{{<style>}}的形式被编译进页面的{{<head>}}里。模块内容不能为空,否则它将不会被编译为{{<style>}}标签。 ++ NewPage(新建页面) 可以有以下属性: [[collapsible show="展开" hide="关闭"]] ||~ 属性 ||~ 是否必填 ||~ 允许值 ||~ 默认值 ||~ 描述 || || category || 否 || 页面类别的名称 || none || 通过在页面名称前添加类别名称来强制使用指定的页面类别:注意:不能为此使用 _default 类别。 || || template || 否 || 模板页面的名称 || none || 用作新页面模板的页面(或逗号分隔的页面列表) || || size || 否 || 任何正整数 || 30 || 显示的输入字段的大小 || || button || 否 || 任何字符串 || "create page" || 创建页面按钮内显示的文本 || || format || 否 || 任何有效的正则表达式 || none || 强制输入值匹配所需格式 || || tags || 否 || 空格分隔的标签列表 || none || 自动向创建的页面添加指定标签 || || parent || 否 || 页面名称或 category:page 形式 || none || 自动为创建的页面添加父页面 || +++* 自动保存功能的属性 ||~ 属性 ||~ 是否必填 ||~ 允许值 ||~ 默认值 ||~ 描述 || || mode || 否 || edit, save-and-refresh, save-and-go || edit || "edit" 会将你带到编辑器。"save-and-refresh" 会保存页面并刷新当前页面。"save-and-go" 会保存页面并跳转到该页面(不经过编辑器),除非传递了 goTo 属性 || || goTo || 否 || 有效的页面名称 || none || 指定自动保存页面后要跳转到的页面 || [[/collapsible]] 任何用作模板(通过{{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]]@@}})必须使用列表的语法,类似于: [[code]] # 字段 1 名称  * 选项 1 名称:值1  * 选项 1 名称:值2   * 子选项 1 名称:值 # 字段 2 名称  * ... [[/code]] 允许的字段名称列表如下: ||~ 选项名称 ||~ 是否必填 ||~ 允许值 ||~ 默认值 ||~ 描述 || || title || 否,但推荐填写 || 任何字符串 || field_name || 在左侧同一行显示的字段标题 || || type || 否 || text, textarea, select, checkbox || text || 输入字段的类型 || || size || 否 || 整数 || 30 || 输入字段的大小 || || default || 否 || 输入值 || none || 对于“text”或“textarea”字段,它只是显示在字段内的字符串;对于“select”字段,它必须是选项标签之一 || || hint || 否 || 任何文本 || none || 提示信息 || || options |||||||| 仅适用于“select”,见下文 |||||||| || rules |||||||| 验证规则,见下文 |||||||| 如果你的字段是{{select}}字段,你还必须为其提供选项。操作方法类似: [[code]] # 字段名称  * title: 性别  * type: select  * default: male  * options:   * male: 男   * female: 女   * option_name: Displayed value [[/code]] 本模块提供了一种强大的方式来验证输入数据。要使用验证,请执行以下操作: [[code]] # 字段名称  * title: Validated field  * type: text  * rules:   * rule1_name: value   * rule2_name: value [[/code]] ||~ 规则名称 ||~ 允许值 ||~ 描述 || || required || 任意值,例如 "true" || 标识该字段是否为必填项 || || minLength || 整数 || 不允许字符串长度短于限制值 || || maxLength || 整数 || 不允许字符串长度长于限制值 || || match || Perl 正则表达式 || 检查值是否与表达式匹配,例如 /[a-z0-9]+/ 仅允许小写字母和数字 || || number || 任意值,例如 "true" || 检查值是否为数值 || || minValue || 数字 || 为数值字段设置下限 || || maxValue || 数字 || 为数值字段设置上限 || ++ PetitionAdmin(请愿) {{PetitionAdmin}}模块允许你设置和管理在线网络请愿活动。你只需要在页面上放一个{{@@[[module PetitionAdmin]]@@}},Wikidot就会教你把剩下的事干了。 ++ SiteGrid(站点网格)和FeaturedSite(特色站点) {{SiteGrid}}模块能够在Wikidot上创建一个网站缩略图网格,当鼠标指针悬停在缩略图上时,会以弹出窗口的形式显示描述和一些详细信息。模块会随机对缩略图进行排序。它用于Wikidot主页上列出特色网站。 在该模块中,你必须提供一个网站名称列表,例如community(如果网址是community.wikidot.com),或者提供完整网址,例如community.wikidot.com或www.digistan.org(如果网站有自定义域名)。只有一个可选属性{{limit}},限制从预定义列表中显示的缩略图数量。 例如: [[code]] [[module SiteGrid limit="20"]] scp-wiki scp-wiki-cn scp-jp backrooms-wiki-cn [[/module]] [[/code]] {{FeaturedSite}}与{{SiteGrid}}非常相似,但它仅显示一个维基站点缩略图,而且该缩略图要大得多。 ++ Feed(RSS提要) 此模块负责导入RSS提要,由于这种技术已经过时,故不在此翻译,有感兴趣的可以去看原文:[*https://www.wikidot.com/doc-modules:feed-module 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 || 从开头跳过多少个条目? || || fixRelativeLinks || 否 || true || none || 若你使用外部论坛的类别(如 Wikidot 资讯 / 更新日志等),此属性可修复论坛帖子的链接 || {{category}}的值可以在讨论区的URL中被找到,例如SCP中分的“一般讨论区”连接是[*https://scp-wiki-cn.wikidot.com/forum/c-882982/ 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结构: [[code type="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> [[/code]] ++ 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]]@@}}被用于插入一系列图片,语法如下: [[code]] [[gallery size="image-size"]] : image-source1 attribute1="value1" attribute2="value2" ... : image-source2 attribute1="value1" attribute2="value2" ... ... [[/gallery]] [[/code]] ||~ 属性 ||~ 允许值 ||~ 默认值 ||~ 描述 || || 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}}属性还接受以下已弃用的值:{{nameDesc}}、{{dateAddedDesc}} 和 {{dateAdded}}。为了与 {{ListPages}} 模块保持一致,它还接受以下值:{{name desc desc}} 和 {{created_at desc desc}}(含义与不带 {{desc desc}} 时相同)。 如果在调用{{[[gallery]]}}标签时未提供图片列表,它将自动显示当前页面附加的图片文件的缩放图像(缩略图)(默认情况下,图库仅显示图片,不包括 .pdf 和 .ps 文档)。 如果在调用{{[[gallery]]}}时提供了图片列表,则仅显示这些图片。在这种情况下,图片源不能是 URL。允许的 “每张图片属性” 有: * {{link}}:URL或维基页面名称(为符合Flickr条款,此属性对Flickr图片无效) * {{alt}}:图片不可用时的替代文本 要使文档在新窗口中打开,适用与单个图片相同的规则。 默认情况下,图库使用 LightBox 查看图片。这意味着,如果你点击图库中的图片,将弹出一个非常美观[[footnote]]官方文档原文为//very nice looking//。[[/footnote]]的弹窗,你可以在不重新加载页面/打开新标签页或窗口的情况下向前/向后滚动图片。要禁用 LightBox 查看,请使用以下参数:{{@@[[gallery viewer="no"]]@@}}或{{@@[[gallery viewer="false"]]@@}}。 ++ FlickrGallery(Flickr画廊) 与Flickr有关。此功能似乎已经由于Flickr的API变更而报废。 [[collapsible show="展开属性列表" hide="关闭"]] ||~ 属性 ||~ 是否必填 ||~ 允许值 ||~ 默认值 ||~ 描述 || || 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 || 否 || 任何有效的相册ID || none || 从相册获取图片 || || groupId || 否 || 任何有效的群组名称 || none || 从指定群组获取图片 || || groupUrl || 否 || 群组主页的URL地址 || none || 从指定群组获取图片 || ||||||||||~ 显示选项 |||||||||| || perPage || 否 || 1到100之间的任何数字 || 30 || 每页显示多少张照片 || || limitPages || 否 || 任何正数 || none || 限制可导航的页数;如果完全不想导航页面也很有用(limitPages="1") || || size || 否 || "square" - 75x75像素、"thumbnail" - 最长边100像素、"small" - 最长边240像素、"medium" - 最长边500像素 || "thumbnail" || 要显示的图片尺寸 || ||||||||||~ 其它选项 |||||||||| || disableBrowsing || 否 || "yes"/"true" || none || 禁用点击时在叠加窗口中显示图片 || || contentType || 否 || photos, screenshots, other, photos-screenshots, screenshots-other, photos-other, all || "all" || 设置从Flickr检索的图片类型 || [[/collapsible]] ++ 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}}。非管理员进入控制面板会收到权限错误提示。 + 嵌套使用 你可能会注意到,{{@@[[include]]@@}}的引用参数{{@@{$parameter}@@}}可以保留完整的Wikidot语法。实际上,它几乎可以保留任何东西。这是一个极具灵活性的设计,我们来看一些示例: ++ CSS版式“预设选项” 假设有一个页面{{test-1}},内容如下: [[code]] [[module CSS]] /* {$option}/ .myclass {     color: red; } /{$option} */ [[/module]] [[/code]] 在引用此页面时,如果你以{{@@[[include@@ test-1 |**option=***]]}}的格式引用,那么{{{$option}}}就会被替换为{{*}},页面内容也会变成: [[code type="CSS"]] [[module CSS]] /* */ .myclass {     color: red; } /* */ [[/module]] [[/code]] 在引用之前,CSS模块里是一段很长的注释,而引用之后注释就“闭合”了,从而让中间的CSS代码变得有效。模块里的引用参数也可以工作。 有些CSS版式的引用参数需要设置为{{a}},这是因为它们将引用参数放在了{{[[ift**a**@@gs]]@@}}的“a”那里;还有一些是{{--}},利用了Wikidot的注释语法{{@@[!-- --]@@}}。 引用参数也可以被用于{{@@[[iframe]]@@}}的URL中,从而通过URL向{{<iframe>}}传参。当然,它也可以用于各种模块的属性中,或者HTML内的脚本值。你可以自己尝试一些奇特的引用方式。 ++ ListPages的嵌套 有些模块也可以互相嵌套。例如,ListPages与CSS嵌套: [[code]] [[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]] [[/code]] 由于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功能来实现一些简单的累计计算。有关这方面的高级运用,建议阅读[[*User Sharia Vanilla]]撰写的[[[listpages-entry-again|这篇]]]和[[[listpages-dazzling|这篇教程]]]。 此外,ListUsers可以被通过类似的方式嵌入ListPages中。 虽然ListPages里不能使用{{[[html]]}},但可以使用{{[[iframe]]}}和{{[[embed]]}}并正常将变量嵌入。也可以试着将其他模块互相嵌套。