Skip to content

模块 ​

模块为页面提供动态内容,包括页面列表、评分、论坛、表单、站点动态等。本文列出 ProjectWikit 提供的全部模块及其参数与示例。通用的维基语法请参阅语法。

放置模块 ​

不带正文的模块写成一行:

text
[[module Rate]]

带正文的模块需要结束标签。正文是一个模板,由模块填入内容:

text
[[module ListPages category="news" limit="5"]]
* %%title_linked%%
[[/module]]
  • 模块名不区分大小写:[[module ListPages]]、[[module listpages]] 与 [[module LISTPAGES]] 相同。
  • 参数名不区分大小写:perPage 与 perpage 相同。除非模块另有说明,参数值区分大小写。
  • 参数值应放在双引号中:category="news"。
  • 模块未列出的参数会被忽略。
  • [[module654 ...]] 是 [[module ...]] 的另一种写法。
  • 除 Button 外,模块的输出自成一块。即使写在句子中间,也会另起一行显示。

模块可用的位置 ​

  • 页面内容中,包括通过 [[include]] 引入的页面和分类模板(分类:_template)。被引入页面中的模块作用于引入它的页面。例如,被引入组件中的 [[module Rate]] 为引入它的页面评分。
  • 论坛帖子中不可用。
  • 站点页脚的授权说明文字中(参阅站点管理)仅 [[module Time]] 可用。

模块嵌套 ​

模块正文中可以包含其他模块,包括带正文的模块:

text
[[module ListUsers]]
[[module CSS]]
#header { background-image: url(%%avatar%%); }
[[/module]]
[[/module]]

外层模块会先替换整段正文中的变量,内层模块随后才运行。两个模块都认识同名变量时,以外层的值为准。为此,[[module ListUsers]] 额外提供 %%user_displayname%% 与 %%user_name%%,以便在 [[module ListPages]] 中使用。

[[module ListPages]] 嵌套超过 10 层时会停止并显示错误。

开关值 ​

标注为“开关”的参数接受 true、yes、t 或 1 表示开启,false、no、f 或 0 表示关闭,不区分大小写。其他值一律按默认值处理。

从页面地址读取的值 ​

部分模块会从页面地址读取值。页面名之后的部分按“键/值”成对读取:

text
/page-name/key/value/other-key/other-value

键不区分大小写。例如,/forum/c-3/p/2 显示编号为 3 的论坛分类的第 2 页。

错误 ​

模块无法运行时,页面会在其位置显示一个错误块,页面其余部分照常显示。

提示含义
模块 '{name}' 不存在没有该名称的模块,或该模块在此处不可用
处理模块 '{name}' 时出错模块无法以给定的参数值运行
模块处理已禁用页面是以 /nomodule/true 打开的

如果某个模块导致页面无法正常使用,请在页面地址后追加 /nomodule/true 访问,例如 /main/nomodule/true。此时页面上的模块都不再运行。

模块一览 ​

模块正文用途
ListPages有按分类、标签、日期、评分等条件列出页面
CountPages有以与 ListPages 相同的条件统计页面数
PagesByTag无列出带有某个标签的页面
TagCloud无按使用次数显示所有标签
WantedPages无列出指向不存在页面的链接
ListUsers有显示当前读者或本页作者的信息
Members有列出用户账号,可按身份组筛选
SiteChanges无全站最近的更改,可筛选
Rate无本页的评分组件
ForumStart无论坛版块与论坛分类
ForumCategory无某个论坛分类中的论坛主题
ForumThread无某个论坛主题中的帖子
ForumNewThread无发起论坛主题的表单
RecentPosts无论坛最新帖子
FrontForum有以新闻条目形式显示论坛主题
NewPage无创建页面的表单
Search无带筛选条件的站内搜索
Files无本页附件列表
Gallery无本页图片附件的缩略图
CSS有为页面添加 CSS
PageDescription有设置链接预览中的描述
PageImage无设置链接预览中的图片
Redirect无将读者转到另一个地址
Button无编辑按钮或标签按钮
Input有不提交任何内容的表单控件
ApplicationForm无提交支持工单或入组申请
MembershipByPassword无凭入组密码获得身份组
Comments无指向本页评论的链接
Time有以读者时区显示的当前日期与时间

页面列表 ​

ListPages ​

筛选页面,并为每个页面渲染一次正文,将 %%title%% 等变量替换为该页面的值。

text
[[module ListPages category="*" order="updated_at desc" limit="10"]]
* %%title_linked%% (%%rating%%), edited %%updated_at%%
[[/module]]

没有正文时,每个页面都不显示任何内容。读者无权查看的分类中的页面一律不会列出。

指定单个页面 ​

参数取值含义
fullname页面全名,或 .仅显示该页面。. 表示当前页面。其他筛选参数全部忽略。
name.仅显示当前页面。其他筛选参数全部忽略。
range.、others.:仅显示当前页面,其他筛选参数全部忽略。others:按其他参数筛选出的页面,但不含当前页面。不识别其他取值。

筛选页面 ​

参数取值默认值含义
category*、.、分类名.*:所有分类。.:当前页面所在分类。其他写法为以空格或逗号分隔的分类名列表;-名称 排除该分类,列表中的 . 表示当前分类。主分类的名称是 _default。
pagetypenormal、hidden、*normalnormal:名称不以 _ 开头的页面。hidden:仅含名称以 _ 开头的页面。其他取值:两者都包括。
name*、=、前缀*、前缀%、页面名*按不含分类的页面名筛选。=:与当前页面同名。abc* 或 abc%:以 abc 开头的名称。其他写法为精确匹配。
tags参阅标签*按标签筛选。
parent-、=、-=、.、页面全名无-:没有父页面的页面。=:与当前页面父页面相同的页面。-=:父页面与当前页面不同的页面。.:当前页面的子页面。页面全名:该页面的子页面。
link_to页面全名,或 .无链接到指定页面的页面。. 表示当前页面。
created_by用户名、wd:名称 或 .无该用户作为作者的页面。wd:名称 表示导入的 Wikidot 账号。. 表示读者本人;未登录的读者得到空列表。
created_at参阅日期无按创建时间筛选。
updated_at参阅日期无按最后编辑时间筛选。
rating数字,可带比较符,或 =无按评分筛选。
votes整数,可带比较符,或 =无按投票数筛选。
popularity整数,可带比较符,或 =无按人气值(正面投票所占百分比)筛选。
_字段名值,可带比较符无按数据表单字段筛选。参阅数据表单字段。

取值无法对应到任何对象时(父页面不存在、用户不存在、日期或数字无法识别),列表为空。

rating、votes 与 popularity 的比较符为 =、<>、>、>=、< 与 <=,写在值的前面:rating=">=10"。不写比较符时按 = 处理。单独的 = 表示“等于当前页面的值”。使用赞成/反对评分的站点或分类,评分为投票之和;使用星级评分的,评分为平均值。评分筛选与按评分排序采用 category 中第一个分类的评分系统;未指定分类时采用 _default 的评分系统。

标签 ​

取值含义
*不按标签筛选(默认)
-没有任何标签的页面
=带有当前页面全部标签的页面,可以带有其他标签
==标签与当前页面完全相同的页面,不多也不少。当前页面没有标签时:没有任何标签的页面
标签列表以空格或逗号分隔的标签,规则见下

在标签列表中:

  • +标签:页面必须带有该标签。
  • -标签:页面不得带有该标签。
  • 标签:页面至少带有以这种写法列出的标签之一。
  • 标签分类中的标签写作 分类:标签。

标签名按小写匹配。站点上不存在某个 +标签,或所有不带符号的标签都不存在时,列表为空。不存在的 -标签 会被忽略。

text
[[module ListPages category="*" tags="+euclid -archived"]]

日期 ​

created_at 与 updated_at 接受年、年月或年月日,前面可以加比较符:

text
2021        2021-02        2021-02-09        >=2021-02        <>2021

日期按站点时区解释(参阅站点管理)。年、月或日均涵盖整个时段,即从第一天的 00:00 起,到该时段结束后次日的 00:00 为止(不含)。各比较符使用该时段的方式如下:

取值选出的页面时间
2021 或 =2021在 2021 年内:不早于 2021-01-01 00:00,且早于 2022-01-01 00:00
2021-02在 2021 年 2 月内:不早于 2021-02-01 00:00,且早于 2021-03-01 00:00
2021-02-09在 2021 年 2 月 9 日内:不早于 2021-02-09 00:00,且早于 2021-02-10 00:00
<>2021在 2021 年以外:早于 2021-01-01 00:00,或不早于 2022-01-01 00:00
>2021在 2021 年之后:不早于 2022-01-01 00:00
>=2021从 2021 年开始:不早于 2021-01-01 00:00
<2021在 2021 年之前:早于 2021-01-01 00:00
<=2021截至 2021 年结束:早于 2022-01-01 00:00
=在当前页面所在的那一天内

每个参数仅接受一个条件。created_at=">=2021-02-08" 选出 2021 年 2 月 8 日及之后创建的页面,updated_at="<2021-03" 选出最后编辑于 2021 年 3 月之前的页面。

年份必须在 1 到 9999 之间。超出范围的月或日会调整为最接近的有效值,因此 2021-13-99 按 2021-12-31 处理。其他文字会使列表为空。

排序 ​

order 接受一个字段名,可在其后加一个空格和 desc 表示降序。两个词都应小写。默认值为 created_at desc。

字段排序依据
created_at创建时间
updated_at最后编辑时间
created_by作者用户名。有多位作者的页面会为每位作者各出现一次。
name不含分类的页面名
fullname页面全名
title标题
rating评分
votes投票数
popularity人气值
size当前源代码的长度
revisions历史记录条数
comments本页评论中的帖子数
random随机排序,忽略方向
_字段名数据表单字段,按文本比较

其他字段一律从新到旧列出。在默认排序下使用 reverse="true",仅在全部页面都位于同一页列表中时才会变为从旧到新,因为它仅反转当前这一页列表。

数量与分页 ​

参数取值默认值含义
offset整数0跳过开头的若干页面。
limit整数无最多显示的页面总数。
perPage整数20每页列表的页面数,最大 250。0 或负数不显示任何页面。
reverse开关false反转当前这一页列表中页面的顺序。

所选页面在一页列表中放不下时,列表下方会出现分页栏。分页链接是 /page-name/p/2 形式的普通地址,可以直接链接到某一页列表。同一页面上的所有列表共用 p 的值。

格式 ​

参数取值默认值含义
prependLine维基语法无在所有页面之前渲染一次。不替换变量。
appendLine维基语法无在所有页面之后渲染一次。不替换变量。
separate开关true开启:每个页面的正文、prependLine 与 appendLine 分别渲染,正文中的 [[iftags]]、[[ifcategory]] 与图片以被列出的页面为准。关闭:先把全部内容拼成一段维基语法再渲染,跨行组成表格时必须关闭;此时 [[iftags]] 与 [[ifcategory]] 以列表所在的页面为准。
wrapper开关true开启:列表包在 class 为 list-pages-box 的 div 中,并带有分页栏。关闭:没有外框,也没有分页栏,仅显示第一页列表(或地址中 p 指定的那一页)。
tagTarget页面名system:page-tags%%tags_linked%% 链接指向的页面:/<tagTarget>/tag/<标签>。

使用列表生成表格:

text
[[module ListPages category="*" tags="+featured" order="rating desc" separate="false" prependLine="||~ Page ||~ Rating ||~ Created ||"]]
|| %%title_linked%% || %%rating%% || %%created_at|%Y-%m-%d%% ||
[[/module]]

也可以不使用 prependLine 与 appendLine,而将正文分为 [[head]]、[[body]] 与 [[foot]] 三段。三段必须按此顺序出现,使用另外两段时必须同时写出 [[body]]。紧接开始标签之后与紧挨结束标签之前的换行会被去除:

text
[[module ListPages category="news" perPage="5"]]
[[head]]
++ Latest news
[[/head]]
[[body]]
* %%title_linked%%
[[/body]]
[[foot]]
[[[news:archive|All news]]]
[[/foot]]
[[/module]]

从地址读取参数值 ​

任何参数值都可以使用 @URL|默认值 从页面地址读取。模块使用地址中与该参数同名的键的值;地址中没有该键时使用默认值:

text
[[module ListPages category="@URL|sandbox"]]
* %%title_linked%%
[[/module]]

以 /page-name/category/drafts 访问时列出 drafts 分类的页面;以 /page-name 访问时列出 sandbox 分类的页面。此写法适用于 ListPages 与 CountPages。

变量 ​

变量写作 %%名称%%,区分大小写:%%Title%% 不会被替换。除非另有说明,某个页面没有值的变量会原样保留。分类模板(分类:_template)中也可以使用这些变量。

页面:

变量值
%%name%%不含分类的页面名
%%category%%分类(主分类为 _default)
%%fullname%%页面全名;主分类的页面不带分类前缀
%%title%%标题
%%title_linked%%、%%linked_title%%显示标题的页面链接
%%link%%/ 加页面标题。仅在标题与页面名相同时才与页面地址一致。
%%content%%页面当前的源代码
%%content{n}%%源代码的第 n 段,从 1 开始计数。段与段之间以由四个或更多 = 组成的一行分隔。不存在的段为空值。
%%size%%当前源代码的字符数
%%revisions%%历史记录条数
%%children%%子页面数
%%index%%在列表中的序号,从 1 开始,跨页连续
%%total%%所选页面的总数

父页面(页面没有父页面时原样保留):

变量值
%%parent_name%%、%%parent_category%%、%%parent_fullname%%、%%parent_title%%父页面的名称、分类、全名与标题
%%parent_title_linked%%、%%parent_linked_title%%显示标题的父页面链接

日期(以读者时区显示):

变量值
%%created_at%%创建时间
%%updated_at%%最后编辑时间
%%created_at|格式%%、%%updated_at|格式%%同上,使用 [[date]] 的格式,例如 %%created_at|%Y-%m-%d%%

人员:

变量值
%%created_by%%作者的显示名,以空格分隔。导入的 Wikidot 账号带 wd: 前缀。
%%created_by_unix%%作者的用户名
%%created_by_id%%作者的用户编号
%%created_by_linked%%带头像的作者用户链接
%%created_by_linked_plain%%不带头像的作者用户链接
%%authors_count%%作者人数
%%updated_by%%、%%updated_by_unix%%、%%updated_by_id%%、%%updated_by_linked%%、%%updated_by_linked_plain%%最后编辑者的对应信息。没有编辑者时,文字形式与链接形式显示“系统”。

评分:

变量值
%%rating%%赞成/反对:带符号的总和,如 +12。星级:保留一位小数的平均值,没有投票时为 —。评分关闭:0。
%%rating_votes%%投票数
%%rating_percent%%仅星级:平均值占 5 分的百分比。其他情况为 0。
%%popularity%%正面投票(赞成,或 3.0 分及以上的星级投票)所占百分比。评分关闭时为 0。
%%current_user_voted%%True 或 False

标签。标签为小写并已排序。全名以 _ 开头的标签为隐藏标签。

变量值
%%tags%%可见标签,以空格分隔
%%_tags%%仅隐藏标签
%%alltags%%全部标签
%%tags_linked%%、%%_tags_linked%%、%%alltags_linked%%同上,以链接形式列出,以逗号分隔。链接指向 /system:page-tags/tag/<标签>,或 tagTarget 指定的页面。
%%tags_linked|前缀%%(_tags 与 alltags 同样适用)链接指向“前缀加标签”。前缀不以 /、http:// 或 https:// 开头时,会在前面补上 /。

评论:

变量值
%%comments%%本页评论中的帖子数
%%commented_at%%最后一条帖子的时间;没有帖子时为空
%%commented_by%%、%%commented_by_unix%%、%%commented_by_id%%、%%commented_by_linked%%最后一条帖子的作者;没有帖子时为空

站点:

变量值
%%site_name%%站点标识名
%%site_title%%站点标题
%%site_domain%%站点域名

%%preview%%、%%summary%% 与 %%first_paragraph%% 不可用。

列表显示 %%content%% 时,被列出页面中的模块也会运行。被列出页面中的 [[module CSS]] 会作用于列表所在的页面,其中的 [[module Redirect]] 也会让列表所在的页面发生重定向。

在分类模板中,模板自身的变量会在其中任何模块运行之前被替换。因此,写在模板中的 [[module ListPages]] 正文得到的是当前显示页面的值,而不是被列出页面的值。

数据表单字段 ​

_template 页面中含有 [[form]] 块的分类即为数据表单分类。该块以 YAML 定义字段,分类中每个页面的源代码则以 YAML 的 字段: 值 行保存各字段的值。[[form]] 块本身不会显示。

text
[[form]]
fields:
  status:
    type: select
    label: Status
    values:
      open: Open
      done: Done
  priority:
    label: Priority
[[/form]]

该分类中的一个页面:

text
status: done
priority: 02

字段属性有 type、label、hint、default、value 与 values(select 的选项)。类型有 text(默认)、wiki、select、checkbox、hidden 与 static;hidden 与 static 字段的值始终为定义中的 value。字段值通过编辑页面源代码修改。对于此类页面:

变量值
%%form_data{字段}%%用于显示的字段值。页面作者输入的文字按原文显示;wiki 与 static 字段以及 select 选项的显示文字按维基语法渲染。
%%form_raw{字段}%%保存的原始值
%%form_label{字段}%%字段的标签
%%form_hint{字段}%%字段的提示

ListPages 可以在字段名前加下划线,按字段筛选与排序:

text
[[module ListPages category="projects" _status="=done" order="_priority desc"]]
* %%title_linked%%: %%form_data{status}%%
[[/module]]
  • 比较符为 =、<>、>、>=、< 与 <=。= 不区分大小写;其他比较符逐字符比较文本,因此仅位数相同的数字可以正确比较(应写作 01、02……10)。
  • 所在分类没有表单的页面,永远不满足字段条件。
  • 按字段筛选时需要读取满足其他参数的全部页面,分类中页面较多时速度较慢。

旧参数名 ​

以下旧参数名同样可用:

写法等同于
datecreated_at
categoriescategory
tagtags
order="dateCreatedAsc"、dateCreatedDesccreated_at、created_at desc
order="dateEditedAsc"、dateEditedDescupdated_at、updated_at desc
order="titleAsc"、titleDesctitle、title desc
order="ratingAsc"、ratingDescrating、rating desc
order="pageLengthAsc"、pageLengthDescsize、size desc

未指定 range 时,skipCurrent="true" 不列出当前页面,与 range="others" 相同。

CountPages ​

以与 ListPages 相同的参数统计页面数,并渲染一次正文。perPage 不起作用;offset 与 limit 起作用。支持 @URL|默认值 写法。

变量值
%%total%%、%%count%%页面数(不区分大小写)
text
[[module CountPages category="scp" tags="+euclid"]]
There are %%total%% Euclid pages.
[[/module]]

PagesByTag ​

按标题顺序列出带有某个标签的页面。

参数取值默认值含义
tag标签名,或 分类:标签无要列出的标签。页面地址中的 tag 值(/page-name/tag/euclid)优先。

未指定标签,或标签分类不存在时,模块不显示任何内容。标签名不区分大小写。读者无权查看的分类中的页面不会列出。

text
[[module PagesByTag]]

放在 system:page-tags 页面上时,它列出地址中指定标签的页面;TagCloud 的链接默认正是指向这里。

TagCloud ​

显示站点上的全部标签,使用越多的标签字号越大、颜色越深。标签按不含分类的名称排序。名称以 _ 开头的标签从不显示。

参数取值默认值含义
limit0 或更大的整数全部仅包含使用最多的若干个标签。无法识别的值会显示错误。
minFontSize、maxFontSize带单位的大小,如 80% 或 12px100%、300%使用最少与最多的标签的字号。须同时指定且单位相同;仅指定其中一个时,两者都使用默认值。
minColor、maxColor#rgb、#rrggbb、rgb(r,g,b) 或 r,g,b128,128,192、64,64,128使用最少与最多的标签的颜色。须同时指定;仅指定其中一个时,两者都使用默认值。
target页面名system:page-tags标签链接指向 /<target>/tag/<标签>。
categoriesyes无按标签分类分组显示在可折叠块中,按标签分类的“优先级”排序。

大小按“整数加单位”解析:1.5em 会被解析为 1,单位为 .5em。请使用整数,例如 150%。大小不以数字开头、两个大小的单位不同或颜色无法识别时,模块显示错误。

text
[[module TagCloud limit="50" minFontSize="80%" maxFontSize="200%" categories="yes"]]

WantedPages ​

以表格列出指向不存在页面的链接及其所在的页面。

参数取值默认值含义
category_from同 ListPages 的 category.包含这些链接的页面所在的分类。
category_to同 ListPages 的 category*缺失页面所在的分类。
perPage整数20每页列表的行数,最大 250。

还可以使用 ListPages 的其他筛选参数(如 tags 或 parent)进一步限定源页面。limit 与 offset 会被忽略。

text
[[module WantedPages category_from="*" category_to="-fragment"]]

用户 ​

ListUsers ​

显示读者本人或当前页面作者的信息。

参数取值默认值含义
always开关false为未登录的读者也渲染正文。不开启时,未登录的读者看不到任何内容。
anonname文字[匿名]未登录读者使用的名称。
authors开关false改为为当前页面的每位作者各渲染一次正文。

读者相关的变量(不区分大小写):

变量已登录未登录
%%number%%用户编号-1
%%title%%、%%user_displayname%%显示名;没有显示名时为用户名anonname
%%name%%、%%user_name%%用户名anonname
%%avatar%%头像地址默认头像地址
%%is_authenticated%%truefalse

authors="yes" 时的变量:

变量值
%%author%%作者的显示名;导入的 Wikidot 账号带 wd: 前缀
%%author_linked%%作者的用户链接
text
[[module ListUsers always="yes"]]
[[if %%is_authenticated%%]]
Signed in as %%title%%.
[[else]]
Not signed in.
[[/if]]
[[/module]]
text
[[module ListUsers authors="yes"]]
%%author_linked%%
[[/module]]

Members ​

按用户编号顺序列出用户账号,每个账号渲染一次正文。已停用的账号也包括在内。

参数取值默认值含义
role身份组的标识名或编号全部账号仅列出拥有该身份组的账号。身份组不存在时显示错误。
perPage整数100每页列表的账号数,最大 500。
limit整数100未指定 perPage 时使用。

变量(不区分大小写):

变量值
%%members%%、%%member%%带头像的用户链接
%%time%%注册时间
%%number%%用户编号
%%name%%用户名
%%title%%显示名;没有显示名时为用户名
%%index%%序号,从 1 开始,跨页连续
%%total%%列出的账号总数

分页使用地址中的 p。

text
[[module Members role="staff" perPage="20"]]
|| %%index%% || %%members%% || %%time%% ||
[[/module]]

站点动态 ​

SiteChanges ​

从新到旧显示全站最近的更改。该模块没有参数;筛选条件通过列表上方的表单或页面地址设置。

地址中的键:

键取值含义
category分类名,或 *分类筛选
username用户名,或 ~部分名称用户筛选。名称为 system 时,或以 ~ 开头且文字是 system 一词的一部分时,还会包括系统所做的更改。
perpage大于 0 的整数每页列表的条目数,默认 20
p整数列表页码
更改类型true显示该类型

category、username、perpage 与各更改类型的键必须带值。缺少值的键,或不是正整数的 perpage,都会显示错误。

更改类型与标记:

键标记说明
sourceS文章内容已更改
titleT标题已更改
nameR页面已重命名/删除
tagsA标签已更改
newN新页面已创建
parentM父页面已更改
file_added、file_deleted、file_renamedF文件已添加 / 文件已删除 / 文件已重命名
votes_deletedV投票已更改
authorshipC作者已更改
wikidotW从 Wikidot 导入的编辑

回退操作以其撤销的类型作为标记,选中其中任一类型时都会包括在内。键 revert 仅选出回退操作。

text
[[module SiteChanges]]

地址示例:/system:recent-changes/source/true/username/~ali/perpage/50。

评分 ​

Rate ​

显示当前页面的评分组件。组件样式取决于站点或页面所在分类设置的评分系统(参阅站点管理);评分系统为“关闭”时不显示任何内容。投票需要为页面评分的权限。

text
[[module Rate]]
参数默认值说明
favouriteno设为 yes 时,在评分组件后面显示收藏按钮与收藏人数。评分系统为“关闭”时同样不显示。
text
[[module Rate favourite="yes"]]

无论页面中是否含有此模块,读者都可以通过页面下方的“评分”按钮评分,通过“收藏”按钮收藏(参阅功能)。

论坛 ​

论坛由包含论坛模块的系统页面组成。pwikit seed 会为新站点写入这些页面(参阅命令行)。论坛地址会被改写到这些页面:

地址页面模块
/forum/startforum:startForumStart
/forum/s-<id>forum:start/s/<id>ForumStart
/forum/c-<id>forum:category/c/<id>ForumCategory
/forum/t-<id>forum:thread/t/<id>ForumThread
/forum:new-thread/c/<id>forum:new-threadForumNewThread
/forum:recent-postsforum:recent-postsRecentPosts

编号之后的名称(如 /forum/t-12/my-thread)仅用于提高可读性。其他键应紧跟在编号之后:/forum/c-3/p/2。论坛模块还会设置页面标题。论坛的使用方法请参阅功能。

ForumStart ​

列出论坛版块及其中的论坛分类。没有可见论坛分类的版块不会显示。该模块没有参数。

地址中的键含义
s仅显示该版块。版块不存在时返回 404 状态。
hidden取值为 show 时同时列出隐藏的版块

ForumCategory ​

列出某个论坛分类中的主题,置顶的主题排在前面。该模块没有参数。

地址中的键含义
c论坛分类编号。不存在或未指定时返回 404 状态。
sort取值为 start 时按主题创建时间排序;否则按最后回复时间排序
p列表页码

查看需要该论坛分类的查看权限。用于存放页面评论的论坛分类不显示 创建主题 链接。

ForumThread ​

显示某个主题中的帖子,回复显示在被回复的帖子下方。回复、编辑与删除按权限提供。

参数取值默认值含义
contentonlyyes无仅显示帖子,不显示导航路径、描述、主题选项和回复入口。
地址中的键含义
t主题编号。不存在或未指定时返回 404 状态。
p列表页码
post帖子编号;打开包含该帖子的那一页列表

ForumNewThread ​

显示在某个论坛分类中发起主题的表单。该模块没有参数。

地址中的键含义
c论坛分类编号。不存在或未指定时返回 404 状态。

RecentPosts ​

列出论坛中最新的帖子,可通过列表上方的下拉框限定为某个论坛分类。该模块没有参数。

地址中的键含义
c论坛分类编号。取值不是数字时,下拉框与列表都会为空。
p列表页码

站点设有用于页面评论的论坛分类时,不限定论坛分类的列表也会包括页面评论。

FrontForum ​

以新闻条目的形式从新到旧显示论坛分类中的主题,每个主题渲染一次正文。内容取自每个主题的首条帖子。置顶的主题仍按日期顺序排列。不提供分页。

参数取值默认值含义
category以 ; 分隔的论坛分类编号必填取主题的论坛分类。不存在的编号会被跳过。没有任何编号时显示错误。
limit整数20主题数量。0 不显示任何主题。
offset整数0跳过开头的若干主题。

论坛分类编号可以从论坛地址中获得:/forum/c-3/news 表示编号为 3 的论坛分类。不支持 feed、feedTitle、fixRelativeLinks、separate 与 order。

变量(区分大小写):

变量值
%%title%%主题标题
%%linked_title%%、%%title_linked%%主题链接
%%link%%主题地址
%%author%%主题作者的用户链接
%%date%%主题的创建时间
%%date|格式%%同上,使用 [[date]] 的格式
%%comments%%回复数(帖子数减去首条)
%%category%%论坛分类链接
%%content%%、%%text%%、%%long%%、%%body%%首条帖子的源代码
%%description%%、%%short%%、%%summary%%首条帖子纯文本的前 200 个字符

没有正文时使用站点语言的默认格式,中文为:

text
+ %%linked_title%%

%%author%% 发表于 %%date|%O前(%Y年%b%e日 %H:%M)%%

%%content%%

%%comments%% 条回复 | 分类:%%category%%

没有查看论坛分类权限的读者看不到任何内容。

text
[[module FrontForum category="3;7" limit="5"]]
++ %%linked_title%%
%%date|%Y-%m-%d%% · %%author%%

%%summary%%
[[/module]]

ForumPost 与 ForumNewPost ​

这两个模块由主题页面用于加载、编辑、回复和预览帖子,不能放在页面上;写入页面时显示“模块 '…' 不存在”。

创建页面与搜索 ​

NewPage ​

显示用于创建页面的输入框和按钮。

参数取值默认值含义
category分类名无在该分类中创建新页面:输入的名称变为 分类:名称。
example文字无输入框为空时显示的占位文字。
submit文字创建页面按钮文字。指定为空值时按钮上没有文字。

提交时,名称会按照与链接相同的规则转换为页面名。名称可用且页面尚不存在时,浏览器会打开新页面的编辑器。

text
[[module NewPage category="draft" example="my-idea" submit="Start a draft"]]

显示站内搜索,带有作者、标签、分类与日期范围筛选。结果从新到旧排列。

页面文字包含输入的全部词语时才算匹配。作者筛选接受用户名、导入的 Wikidot 用户名或显示名。在标签框中,-标签 表示排除该标签。日期范围按 UTC 的整日比较创建日期,而不是按站点时区。在管理后台中设为不计入搜索的页面、分类和标签不会出现在结果中。

参数取值默认值含义
placeholder文字搜索文章标题或内容…搜索框中的占位文字
q文字无初始搜索词
tags标签无标签筛选框的初始值
category分类名无分类筛选框的初始值
地址中的键含义
q初始搜索词;优先于参数 q
author作者筛选框的初始值
datefrom、dateto日期范围的初始值,格式为 YYYY-MM-DD
text
[[module Search]]

地址示例:/search:site/q/archive/author/alice。

附件 ​

Files ​

以表格列出当前页面的附件及其 MIME 类型与大小,并提供管理附件的链接。该模块没有参数。

text
[[module Files]]

显示当前页面图片附件的缩略图。

参数取值默认值含义
sizesquare、thumbnail、small、mediummediumsquare:75 × 75,裁剪为正方形。thumbnail:长边 100。small:长边 240。medium:长边 500。其他取值显示错误。

[[gallery]] 是该模块的简写:

text
[[gallery size="small"]]

简写会在整个页面源代码中被替换,包括 [[code]] 块内部。

页面设置与样式 ​

CSS ​

将正文作为 CSS 添加到页面。无论模块写在页面的哪个位置,CSS 始终放在页面头部,因此它在页面中的位置不会影响规则的优先顺序。该模块没有参数;可以写入 head 参数,但该参数将被忽略。

text
[[module CSS]]
#page-title { color: purple; }
[[/module]]

被引入页面中的 [[module CSS]],或列表中以 %%content%% 显示的页面中的 [[module CSS]],同样作用于显示它的页面。

PageDescription ​

将正文文字设为链接预览中使用的页面描述(og:description 标签)。没有此模块时,使用页面文字的开头部分。该模块不在页面上显示任何内容。

text
[[module PageDescription]]
A short summary of this page for link previews.
[[/module]]

PageImage ​

设置链接预览中使用的图片(og:image 标签)。该模块不在页面上显示任何内容。

参数取值默认值含义
src地址,或 页面名/文件名无完整地址(含 //)按原样使用。页面名/file.png 指向文件域名上该页面的附件。不含 / 的单独文件名按原样使用,不会解析为当前页面的附件。
text
[[module PageImage src="main/cover.png"]]

Redirect ​

读者打开页面时,以 HTTP 重定向将其转到另一个地址。

参数取值默认值含义
destination地址无目标地址。使用 javascript: 或 data: 的地址会被拒绝并显示错误。
noredirect开关false关闭重定向。

如需查看或编辑带有重定向的页面,请在页面地址后追加 /noredirect/true 访问。

text
[[module Redirect destination="/scp-1730"]]

被引入页面中的 Redirect,或列表中以 %%content%% 显示的页面中的 Redirect,会让显示它的页面发生重定向。

按钮与表单 ​

Button ​

显示作用于当前页面的按钮。多个按钮可以在同一行文字中并排显示。

写法作用
[[button edit]]打开编辑器。为不存在的页面显示时(通过 _404 模板页面),打开创建该页面的编辑器。
[[button set-tags +标签 -标签]]添加和移除标签,然后重新加载页面。不带 + 或 - 的标签按添加处理。
参数取值默认值含义
text文字按钮类型按钮文字。首尾空格会被去除。
text
[[button edit text="Edit this page"]] [[button set-tags +reviewed -needs-review text="Mark reviewed"]]

其他类型显示错误。更改标签需要为页面加标签的权限,否则会显示错误提示。完整写法 [[module Button type="set-tags" tags="+a -b" text="…"]] 与简写等效。[[button ...]] 简写会在整个页面源代码中被替换,包括 [[code]] 块内部。

每个按钮都带有 class wiki-standalone-button,以及值为按钮类型的 data-button-type 属性,可供主题设置样式。

Input ​

显示不会提交到任何地方的表单控件,用于驱动 CSS 的控件,例如通过 :has(input.checkbox:checked) 设置样式的暗色模式复选框。输出使用 class mailform-box,以便为 Wikidot 的 MailForm 编写的主题继续生效,但 [[module MailForm]] 本身不可用。

正文用于定义字段。以 # 开头的行开始一个字段并为其命名;以 * 开头的行以 属性: 值 的形式设置属性。

属性取值默认值含义
title文字字段名标签
typetext、textarea、select、checkboxtext控件类型
size整数30文本框宽度
default文字无初始值。复选框取值为 1、yes、true 或 checked 时为勾选状态。下拉框取值为选项的键。
hint文字无控件下方的说明文字
options键: 显示文字无下拉框的一个选项;每个选项写一行

[[input]] ... [[/input]] 是该模块的简写:

text
[[div class="dark-mode-button"]]
[[input]]
# dark
* title: Dark mode
* type: checkbox
[[/input]]
[[/div]]

正文中没有字段时显示错误。简写会在整个页面源代码中被替换,包括 [[code]] 块内部。

ApplicationForm ​

显示向站点管理人员提交支持工单或入组申请的表单,管理人员在管理后台的“支持工单”或“入组申请”中处理(参阅站点管理)。

参数取值默认值含义
type 或 kindmembershipapply,或其他值工单membershipapply 提交入组申请;其他值提交支持工单。
title 或 subject开关或文字显示标题框开关值用于显示或隐藏标题框。其他文字会隐藏标题框,并以该文字作为标题。

正文必填,最多 20,000 个字符;标题最多 200 个字符。提交需要登录。

无法将标题设为字面上的 yes 或 no,因为这两个词会被当作开关值。

text
[[module ApplicationForm type="membershipapply" title="Membership application"]]

MembershipByPassword ​

显示一个入组密码输入框。已登录的读者输入正确的入组密码后即获得一个身份组。入组密码与身份组在站点设置的“密码入组”中配置(参阅站点管理)。未启用密码入组时,模块不显示任何内容。输入密码需要登录。

参数取值默认值含义
label 或 text文字输入密码输入框的标签
text
[[module MembershipByPassword label="Invitation password"]]

Comments ​

放置一个指向当前页面评论的链接。该模块没有参数。

text
[[module Comments]]

时间 ​

Time ​

将正文中的日期与时间变量替换为当前时间,以读者时区显示。数值不足两位时补零。

变量值
%%currentyear%%年
%%currentmonth%%月,01–12
%%currentday%%日,01–31
%%currenthour%%时,00–23
%%currentminute%%分
%%currentsecond%%秒

变量不区分大小写,少一个 r 的 curent 写法同样有效。

text
[[module Time]]
© 2019–%%currentyear%% Example Wiki
[[/module]]

此模块是站点页脚授权说明文字中唯一可用的模块。