Listpages魔法与你

“ListPages”这个词被到处乱扔。

有的时候,有人看见了一个SCP运用了ListPages,想要模仿一样的效果,于是在讨论区里面求助。有的时候,有人想要知道如何去做一些特别的事情,而回答便是ListPages。而有的时候,有人在你的页面下面留言,说你应该用一个ListPages。

我已经在雨林之中冥想了“ListPages”这个词好几个月,我的心灵已经抵达了最深的梦乡之外。你或许知道它是什么,你甚至知道它意味着什么…但已经感觉到ListPages的真正本质在我的身体中流淌。能感觉到它虚无缥缈的形体正随着我的意志而改变。

我已经征服了第五元素 —— ListPages,而在这篇指导中(这应该是对DrMagnusDrMagnus所写的你与高级格式的一个补充),我会把这些知识传授给你。

—— CroquemboucheCroquembouche



请注意,在本指南中,我为每个示例的ListPages模块添加了灰色背景,以便与其他内容区分开来。你的ListPages模块将会是透明背景的。

请停一下,Croquembouche!

“我不需要知道如何从零开始制作一个ListPages模块!”你对我说,“我只想知道如何用ListPages做到像SCP-2998SCP-2111、还有SCP-3002那样的效果。”

对此我的回答是:你错了,学习基础也是非常重要的。复制粘贴代码固然很好,但若是一旦出现问题,而你并不理解为什么会出错,你又怎么去修复呢?

如果你确实已经学会了基础知识,向下滚动至 制作ListPages迭代。


1:什么是ListPages?


ListPages是一种Wikidot模块。它的完整说明文件可以在这里找到。

引用自说明文件:

ListPages模块是一种多功能、应用广泛的工具,可以筛选并显示同一个网站中的页面。

那就是它所做的——字面意义上的列出页面(List Pages)。

在SCP wiki上,ListPages通常有两种用处:

  1. 在wiki上筛选特定组别的页面,然后列出它们;
  2. 允许一个SCP(或者任何页面)显示多个页面,你可以逐个浏览它们,但是它们都共用一个评分模块。

第一种用途“单调但实用”。我们就叫它列出页面(Listing Pages),因为那就是它所做的。这是一个示例,包含4个ListPages模块用于列出页面

第二种用处,是魔法,是所有人都觊觎的神秘力量。称之为ListPages迭代,简称迭代。这是一个运用了迭代的例子

而第一种,列出页面,是解释起来更容易的方法。在第二种用途(ListPages迭代)中你所需要了解的很多问题,我会借助第一种来说明。

警告

尽量让每个页面里的ListPages模块限制在一个。

ListPages模块会相当严重地减慢页面加载的速度 。我的作者页曾一度有大约三十个模块,我敢肯定它当时需要花上整整一分钟来加载。那样糟透了,别那么做。


2:列出页面(LISTING PAGES)


闲话少说,让我们来看ListPages的第一种功能:单纯的页面列表。

这是我在wiki上评分最低的5个页面:1

如果你认为我仅仅只是手动输入了每个页面的链接放在了上面,再想一想。你正在见证ListPages魔法。你可以试试点进其中一个链接,Upvote(求你了 :'( ),然后刷新这一页。你会看到上面显示的评分会随之而变化。

如果你查看页面源代码,会看见如下的代码:

[[module ListPages created_by="Sekai_s" order="rating" limit="5" separate="no"]]
* %%title_linked%% (+%%rating%%)
[[/module]]

不知道这些都意味着什么?别担心,这篇指导就是为此而准备的。

只要你想,我就能展示我最高分的5个页面,或者不止5个,或者只显示在某个日期之后创建的页面。
有一大堆的参数可供输入ListPages模块,以便做任何你想做的事情。

我会分三个步骤,教你如何掌握ListPages的基础应用:

  1. 筛选你所想要的页面;
  2. 对列表作进一步的修改;
  3. 实际显示列表。


2.1:筛选页面


如果你并没有设定任何参数,ListPages会尝试列出wiki上的每一个页面。这不是你想要的,对不对?这时候就需要我们设置选择器。这会告诉ListPages该选择、以及不该选择哪些页面。

让我们来一起研究一下这些选择器,看看它们都有什么用处。

ListPages有一大堆的选择器可供选择,下面是其中最实用的那部分:

  • created_by — 以作者的用户名来筛选。如果你将它设置为“Croquembouche”,ListPages会仅显示由我创建的页面并忽略其他页面。请注意,这只会选择实际在wiki上发布了页面的那个用户!ListPages无法识别合著和合作作者。
  • rating — 以评分来筛选。如果你将它设置为“>20”,你只能看到评分大于20的页面。设置为“=0”则仅显示得分为0的页面。
  • tags — 以标签来筛选。如果你在标签前面加上“+”,ListPages会仅显示拥有此标签的页面。如果在前面加上“-”,ListPages会仅显示不含此标签的页面。举个例子,“+scp -keter”会列出所有拥有“scp”但不含“keter”标签的页面。
  • created_at — 以页面创建日期来筛选。此选择器能接受一个合理的范围值。“2009”会选择2009年创建的所有页面,而“2009.02”会选择2009年2月创建的页面。“>2009.02”会选择在2009年2月之后创建的页面。“last 3 month”会选择过去3个月创建的所有页面。
  • name — 以页面名称来筛选,更确切地说,是页面的URL地址。“SCP-3000”匹配SCP-3000页面。使用百分符号来表示“以某字符开头的页面” —— 举个例子,“SCP-%”表示所有以“SCP-”开头的页面。
  • category — 以页面类别来筛选。默认情况下,ListPages只会寻找那些与当前页面相同类别的页面。这一页的类别是“_default”,而page-tags、类别是“system”,earthworm、类别就是“component”。查看URL地址 —— 冒号前面的内容就是类别,如果没有冒号,就是“_default”。类别选择器允许你指定一个特定的类别,或者设置为“*”表示所有类别。

总的来说,每一个选择器都会匹配相应的页面而忽略其他的。任何最终显示在列表中的页面,必须符合你全部的选择器。

这份文件更详细地阐述了每个选择器 —— 还有少许其他的选择器! —— 就在“Selecting Pages”标题下方。


2.2:进一步修改列表


仅仅筛选出特定页面并不是全部工作 —— 我们还需要设置这些页面如何去显示。

你还需要了解一些额外的参数。它们并不是选择器,因此并没有放在上一节里。但它们的使用方式完全相同。

  • limit — 设置页面列表的最大限制。如果设置为“5”,那么最多只会显示5个页面。
  • perPage — 列表的每一页该显示多少页面?(它并没有像听起来那么复杂!)默认情况下,这个值被设定为20,如果列表中有超过20个页面,额外的页面会被放在一个新的页码里。你可以在本月最高评分的页面中看到这个效果 —— 在SCP列表的底端(假设这个月已经过去超过一周了)。最大值为250。
  • separate — 列表中的每个条目是单独处于它自己的小列表中,还是全部显示于同一个列表中。有效值为“yes”或者“no” —— 如果你说“yes”,那么列表中的每一项之间都会有很大的空隙,基本上不会是你所想要的效果。
  • order — 列表如何排序。

“order”参数允许许多不同类型的选项,你可以在这份文件“Ordering Pages”标题下面找到。我在这里列出了一些最实用的:

  • order="rating" — 以评分顺序。
  • order="name" — 以页面名称字母顺序(URL地址)。
  • order="title" — 以页面标题字母顺序(页面的实际标题)。2
  • order="created_at" — 以页面创建的日期顺序。
  • order="comments" — 以评论数顺序。
  • order="random" — 随机排序!每过一分钟刷新一次。

默认情况下,所有选项均是升序排列的(所以最先显示较小的数字)。想要以倒序显示,在结尾加上‘desc’ —— 例如 order="rating desc" 。

注意,并没有明确指定升序的方式。正确的做法是加上“desc desc”。这样有意义吗?没有。我们能指望Wikidot提供比这更好的东西吗?不能。


2.3:显示列表


好了,现在我们已经知道了如何去筛选我们想要的页面,还知道了如何修改列表的参数。我们已经得到了一张页面的列表。

在“显示列表”这件事上,你的选择就非常自由了。在模块的主体 —— 就是位于 [[module]][[/module]] 之间的部分 —— 有许多可选择的内容标记。

每一个内容标记就像是一枚戳记。举例说明,%%title%%代表着页面标题。想象一下:ListPages模块有着一张标题的列表,它把第一个标题印在页面上,然后向下移动,拿出下一个标题印上。如此反复,直到印完整张列表。你最终就能得到一张页面标题的列表。

这里是一些最实用的内容标记。照例,完整的列表在这里,“Sections head/body/foot”标题下面。确实有很多,一定要去看一看。

  • %%title%% — 代表页面的标题。
  • %%title_linked%% — 代表页面的标题,显示为一个可供点击的链接。
  • %%created_by%% — 代表页面的作者。
  • %%created_at%% — 代表页面创建的日期。
  • %%rating%% — 代表页面的评分。
  • %%index%% — 代表页面在列表中的序号。
  • %%content%% — 代表页面完整的正文内容。我们以后会回过头来再聊这个。

说实在的,我在这里列举出了7个,而全部一共有56个 —— 有些则相当莫名其妙,你或许永远都用不上。

请注意

ListPages无法显示你的SCP实际的标题。比如说你想列出SCP-173,ListPages无法显示“雕像”。

这是因为SCP标题仅保存在SCP系列中心页上,而不是SCP自身。因此ListPages无法获取这种信息。它只能显示所选页面的基础信息,而不会在其他页面上查找额外的相关信息。


现在我们已经了解了很多参数了,让我们来做一个演示。

我要列出…

  • 过去三个月创建的所有页面…
    • created_at="last 3 month"
  • …标题以字母“S”开头…
    • name="S%"
  • …评分小于100…
    • rating="<100"
  • …同时没有“scp”标签。
    • tags="-scp"
  • 我想显示不超过40个结果…
    • limit="40"
  • …每一页显示10个结果…
    • perPage="10"
  • …所有结果显示在一张列表中,而不是各自单独的列表…
    • separate="no"
  • …最后以评分顺序排列,倒序。
    • order="rating desc"
  • 我想把这些页面放在一个有序列表当中…
  • …后面加上页面创建的日期…
    • %%created_at%%
  • …加上带链接的页面标题…
    • %%title_linked%%
  • …加上作者的名字…
    • by %%created_by%%
  • …加上页面评分,放在括号里。
    • (%%rating%%)

这样,我就写出了如下的ListPages模块:

[[module ListPages created_at="last 3 month" name="S%" rating="<100" tags="-scp"
limit="40" perPage="10" separate="no" order="rating desc"]]
# %%created_at%% %%title_linked%% by %%created_by%% (%%rating%%)
[[/module]]

…得到了如下的列表:

  1. 25 May 2019 07:29 Chapter.1 扬尘飞舞 by CatThorns (34)
  2. 31 May 2019 09:12 解密:SCP-173 - 雕像 - 最初之作 by Sraosha (31)
  3. 02 Aug 2019 09:47 唯有黑夜,方现群星 by Erwin Schrodinger (28)
  4. 09 Aug 2019 16:00 Something ends, Something begins by EDGE_chi (27)
  5. 01 Jul 2019 10:56 7happy7 的 SVG-动画 画廊 by Etinjat (22)
  6. 20 Jun 2019 05:40 流沙艺作页 by silverIce (21)
  7. 25 May 2019 18:13 Chapter.2 不歇的雨 by CatThorns (21)
  8. 07 Jul 2019 05:59 废铁 by Infas12 (18)
  9. 30 May 2019 19:10 Chapter.4 昭昭之心 by CatThorns (18)
  10. 26 May 2019 11:16 Chapter.3 汇聚为洋 by CatThorns (18)
page 1 of 41234next »

这是一个非常有用的列表吗?不是。但这是一个很好的例子。

酷。如果你在沙盒里跟着做了,恭喜你,你已经自己制作出了一个ListPages模块。如果你没有,也要恭喜你,只是少些。

注意:如果你打算在沙盒里制作ListPages模块,注意你只能看见沙盒里的页面,而不是wiki正式网站上的!这让我每一次都猝不及防。

趁热打铁:赶快去最近新增的页面,点击底端的“选项”然后点击“页面源代码”,看看你能不能找到ListPages模块,再看看你能不能理解每一个字节的作用是什么。如果你发现了我没讲到的东西,不妨去看看那份完整的说明文件。


也请注意,你的ListPages模块的内容部分不必限制为一行。只要你需要,它可以是任意多行。

如果你确实有超过一行内容,我建议你设置separate="yes",不然看起来可能会有点凌乱。


我已经介绍完了ListPages的基础,是时候该聊聊它最广为人知的应用了。


3:制作LISTPAGES迭代


这正是事情开始变得棘手之处。

SCP-2998,之后是SCP-1893SCP-1173,是ListPages迭代最为大名鼎鼎的作品,毫无疑问也要为这种流行负责。这三篇均由EskobarEskobar所著,而他又是AelannaAelanna教的,你得感谢他们。

自那以后,许许多多页面都开始用起了ListPages迭代。SCP-2111SCP-3002SCP-3939SCP-3449我的作者页SCP-3020Jim North的提案,以及更多。
如果你的页面也用了ListPages迭代,留下一条评论好让每个人都知道!

我觉得3939做的最好,或许我只是有些片面。

从现在开始我会把ListPages迭代简称为迭代


请谨慎!使用迭代带来了一个严重的副作用:你的读者会期待你运用这种方法的真正意义。迭代应该用于那些内容充实的作品,真正需要这种方式来表达自己的概念和/或不同寻常的格式。迭代不适合于SCP-中规中矩普普通通。


3.1:什么是迭代?


迭代是指一篇SCP(或者任何页面)似乎拥有多个页面,同时保留着相同的评分模块从头到尾不变。当你点击了页面上的一个链接之后,你可以通过查看URL地址来辨别迭代 —— 如果地址以“offset/X”结尾(其中X代表一个数字),那就是迭代。大多数情况下(但并非全部!)迭代的应用可以通过这种方式来识别。

更广泛的说,是指wiki上的页面、通过刷新或者点击链接的方式来改变页面内容。

这条规则有一些例外 —— SCP-2786SCP-3211并非迭代,它们使用的是 [[html]] 而不是 [[module ListPages]][[html]] 的特征是、页面上的一部分内容会比其他内容多花上几秒钟加载,页面内容的改变会立即呈现出来。

迭代,与 [[html]] 不同,只在页面刷新或者访问 /offset/ URL地址时才能改变内容。

SCP-3340又是另一种例外,它使用的是 [[html]] (并非Listpages),同时它又通过刷新来表现动态变化。

总而言之:

迭代和 [[html]] 都是让页面内容呈现出动态变化效果的技术。

迭代基于ListPages。[[html]] 基于 HTML、CSS、通常还有JavaScript。

基于 [[html]] 的动态变化可以即时呈现,而且几乎可以实现任何特效,但仅限于 [[html]] 模块中已有的内容。

基于迭代的动态效果可以覆盖整个页面,但仅能通过用户访问offset页面或者刷新的方式实现。

迭代并不难学[[html]]非常复杂

警告

根据Wikidot的说明文件,ListPages模块和 [[html]] 并不兼容!你在迭代的所有子页面中均无法使用 [[html]] —— 就是没法用。都是Wikidot的错。

你可以选择其中任意一个,但是不能两个都要(一篇文章可以既包含迭代又包含 [[html]] ,但要把它们分开放置)。选择最适合你的作品的那一个,或者最适合你的技能加点的。


3.2:迭代的原理


迭代只不过是一种对标准的“列出页面”技术非常特殊的运用。

下面有一个并不特别的ListPages模块,请注意我们在这里所使用的参数。

[[module ListPages category="fragment" parent="." order="created_at" limit="1" offset="@URL|0"]]
%%content%%
[[/module]]

这里有几个新的术语,现在我来一一讲解。

  • category="fragment" — 筛选“fragment”类别的页面。“fragment”类别的页面并不会显示在“本月最高评分的页面”或者是“最近新增的页面”。这方便了我们去创建子页面,我们稍后再详细讲。不过,它们也并非真的无法被察觉。
  • parent="." — 父页面(parent)选择器匹配那些设置了特定父页面的对象。parent="."则表示匹配那些父页面是当前页面的对象。设置父页面的步骤为:点击底端的“选项”,然后点击“父页面”,然后输入父页面的名称。
  • order="created_at" — 你应该知道这是干什么用的 —— 它会以创建的日期来排列页面。而像SCP-1893则以随机顺序排列。
  • limit="1" — 这限制了ListPages所选择的页面数量最多为1,只有一个页面。
  • %%content%% — 这个占位符意味着,ListPages会将所选页面的全部正文内容转存到当前页面中,包括CSS模块,而不仅仅只是页面标题或者是评分这样的一小段信息。
  • offset="@URL|0" — 这个有点难解释,所以我准备了一些示意图。


3.3: 偏移值(OFFSET)参数


所以说我们刚刚写了一篇SCP,下面的绿色方框代表这个全新的SCP页面。

lp1.png

现在在上面放上一个ListPages模块,以一个大缺口表示(稍后会用%%content%%来填满)。

lp2.png

现在创建两个子页面。这些子页面将会填入父页面的缺口中。

我会详细说明子页面到底是什么、又如何去制作,但是现在,我用这些难看的三文鱼刺身来代表它们:

lp3.png

这两个子页面(三文鱼)的父页面就是我们的新SCP(绿色)。

在父页面上,我们添加ListPages模块来选中并显示两个子页面的正文内容:

[[module ListPages parent="."]]
%%content%%
[[/module]]

结果便是:

lp5.png

现在有一个问题:父页面显示了所有子页面的内容。这是因为默认情况下,ListPages会尽可能多地列出符合条件的页面。

因此,我们设置limit为1,让ListPages仅显示一个页面:

[[module ListPages parent="." limit="1"]]
%%content%%
[[/module]]

结果是:

lp4.png

好了!现在我们有了一个仅显示一个子页面内容的ListPages模块,在读者阅读完毕后,另一个子页面已经就绪等待着显示它自己的内容。

那么我们又怎么显示第二个子页面呢?

我们已经知道,让父页面“更宽” —— 即让它显示全部两个页面 —— 没有用,读者仍然能够看到第一个子页面。

我们只需要将父页面向右移动。

lp6.png
[[module ListPages parent="." limit="1" offset="1"]]
%%content%%
[[/module]]

这时就轮到offset参数派上用场了。你可以把offset想象成从页面开始、到想要显示的子页面之间的距离。

lp7.pnglp8.pnglp9.pnglp10.png

offset的默认值为“0”,意味着显示列表中的第一个子页面。你可以手动调整这个值,但为什么你要这样做呢?

offset="@URL"表示offset并非是一个预设的值,而是根据URL地址而改变。如果你在页面地址结尾加上“/offset/X”,结果就是将URL上的值赋予ListPages模块中的offset参数。举例来说,http://scp-wiki-cn.wikidot.com/scp-2998/offset/1

这就允许读者访问下一页的URL地址来改变offset值。SCP-2998在每一个子页面的底端添加了一个链接,而SCP-3939则添加了复数个链接。

offset="@URL|0"表示允许根据URL地址改变offset值,但若URL地址未指定 —— 比如读者第一次点击这个页面的时候 —— 那么默认值便是0。你可以任意修改 —— “@URL|21”也是一个有效的值 —— 但0通常更容易处理。这取决于你的子页面是如何排序的,而你又想第一个显示哪个页面。

SCP-1893并没有给读者提供任何链接。取而代之的是通过设置order="random"来随机排序。offset值仍然保持默认 —— 0 —— 这样每当顺序随机改变的时候,就会显示列表上的第一个页面(即一个随机的页面)。

  • 关于order="random"的提示:当使用order="random"时,页面的顺序每过一分钟刷新一次。好消息是,它会自己重新随机,不需要你做任何事情;而坏消息是,它不会每时每刻都在重新随机。不停地刷新页面对你没有任何帮助 —— 你仍然必须再等一分钟。


3.4:创建子页面3


如上所述,迭代需要一个父页面和数个子页面。

我的建议是最后再创建父页面,因为你得花上一段时间来创建所有的子页面,因此我先介绍如何创建子页面。理想情况下,你应该先在沙盒里创建并测试每个页面。这应该不那么重要,但稳妥总比出岔子好。

子页面是你保存迭代内容的地方。

我以SCP-3939作为范例。

ListPages模块已经设置了offset="@URL|0",因此主页应该是SCP-3939/offset/0.

它所指向的子页面是fragment:SCP-3939-0。查看子页面和父页面的源代码,找找它们之间的不同。

你应该注意到这三件事:

  1. 子页面包含了所有正文内容,而父页面没有;
  2. 子页面包含了供读者点击的不同的offset链接;
  3. 父页面包含了评分模块和所有CSS格式 —— 即所有页面共用的部分。

关于第3点,你当然可以把相同部分内容在每个子页面都放一遍,但如果放在父页面上,会给你省去不少麻烦。如果你需要修改,你只需要修改父页面上的内容,而不需要将每个子页面都修改一遍。

注意在SCP-3939中,插图是放在子页面而不是父页面上的,这是因为有一页是不需要插图的。如果插图被放在了父页面上,那么所有页面都会强制显示。
如果你需要插图,只需要在某一页上传一次就行了!

通常我们会把所有正文内容放在子页面里,但那并不是必须的!举个例子,SCP-3306在页面末尾添加了一个ListPages模块,而那只改变了文章的结局。


子页面的地址都是“fragment:某某某”。

URL以“fragment:”开头非常重要
Fragment页面并不会显示在“本月最高评分的页面”、“最近新增的页面”或者是“最近修改的页面”里(它们会显示在“最近的更新”里)。此外jarvis和scpper均不会将fragment页面评分计入你的总评分/平均评分里,它们不会造成任何影响。

“某某某”可以随便你填,不过我个人建议以你的SCP来命名,加上offset的数字。比如SCP-XXXX,就应该是fragment:SCP-XXXX-0、fragment:SCP-XXXX-1、fragment:SCP-XXXX-2、如此下去。

对每个子页面重复此操作。

确保你的子页面按照正确的顺序依次创建!在这篇指导里,我推荐依照页面创建的时间来排序,即order="created_at"。你可以采用其他的排序方式,但如果你用的是日期/时间顺序,确保你依照正确的顺序创建子页面。

在你的子页面上添加offset链接,方便你的读者访问下一个offset。


下一步是设置子页面的父页面。点击每个子页面底端的“选项”,然后点击“父页面”,输入父页面的名称(是URL地址 —— 不是页面的标题!)。在你输入几个字母之后,你的父页面应该会自动出现。

如果你还未创建父页面,它不会显示在列表里。别担心 —— 先创建好父页面再来做这一步。


3.5:创建父页面


我们已经有了子页面,现在需要父页面。父页面是一个绿色的透镜,通过它读者可以依次浏览三文鱼色的子页面。

你所要做的就是创建一个新的页面 —— 这次是一个普通的页面,不需要“fragment”分类 —— 然后啪的一声放上一个ListPages模块。

我推荐如下的ListPages模块:

[[module ListPages category="fragment" parent="." order="created_at" limit="1" offset="@URL|0"]]
%%content%%
[[/module]]

在章节3.2:“迭代的原理”中有个相同的模块,对每一个术语都有解释。

唯一一个你可能想要修改的值是order。我总是推荐你们依照你想要展示的顺序创建子页面,然后设置order为“created_at”。如果你根据我的建议命名页面,你当然也可以根据“name”或者“title”来排序。只要你愿意,你甚至可以跟随SCP-1893的脚步随机排序。

在沙盒里,父页面必须是“collab:”分类的,确保URL以“collab:”开头。
默认情况下,ListPages会筛选那些与父页面分类一样的页面,如果你在沙盒里省略了“category”选择器,所有子页面也必须是“collab:”分类的。


创建完之后,别忘记将子页面的父页面设为此页。

在沙盒里,你无法设置父页面,除非父页面的URL以“collab:”开头。如果你忘记了这一步,别担心 —— 点击页面底端的“选项”,然后点击“重新命名”,在页面名称的前面添加“collab:”。在wiki正式网站上则不需要这一步。

请停一下,Croquembouche!

“为什么你要用这些选择器呢?”你问我,“parent="."order="created_at" 固然很棒,但为什么我不能用其他选择器呢?”

我的回答是:当然可以。你可以使用任何你想要的选择器来筛选你的子页面。

但事情是这样的:假设你创建了一大堆页面,从 fragment:SCP-XXXX-0fragment:SCP-XXXX-10。你用 order="name" 来排序,然后使用 category="fragment"name="SCP-XXXX-%"选择器。这样行得通,很完美!

但如果有人想要在里面插入一些页面怎么办,如果有人在你不知情的情况下创建了一个 fragment:SCP-XXXX-0a,它就会出现在列表的0和1之间,你的整个offset链都会被打断。

怀有恶意的人无法在 order="created_at" 的情况下插入页面,除非他们能够时空旅行。如果你加上 created_by="你的用户名" 会更加保险,除非你正在写一些合作的东西。

parent="." 也很好,因为它能自动在你的子页面上留下指向父页面的链接。这对于那些迷路的人来说会很有帮助。

另外,如果你想做的更好,你可以在某处留下所有子页面的列表,对于未来的翻译者来说会非常方便,也方便那些好管闲事的人(比如我)来看看你的作品有没有问题。

当然了,发布你的迭代SCP之后,在这篇指导的下面留下一条评论!


4:总结


好了,你已经出师了。你已经了解了关于“列出页面”和“制作ListPages迭代”的全部基础内容。

尽管如此,请谨慎行事:你现在掌握着强大而可怕的力量:ListPages的力量。明智地使用它,负责任地使用它,最重要的是:谨慎地使用它。ListPages格式如果做得很好,能让人惊叹不已;若是做得不好,ListPages里的每一个页面都会白白牺牲。

在论坛上先征求意见和批评,但更重要的是,在你开始写作之前打磨你的点子。最糟糕的事情莫过于把这么多精力投入到一个并不值得的点子里。


当然了,ListPages并不只这里提及的2个或者3个非常具体的用途。

使用一系列随机排序的ListPages来制作一个模块化的页面,每一次阅读时都完全不同。配合使用ListPages和 [[tabview]] 来为每一个tab分别添加脚注。

去做以前从来没有人做过的事情,这才是这股力量的最终奥义。


如果你还遗留有任何问题,请务必在讨论区留言,我一定会来回答。

感谢您的收听。

Croquembouche,退场。












5:快速参考


既然Croque已经解释了必要的技术,我,ROUNDERHOUSE,以我的方式来帮助你们,亲爱的读者。像我这样的人,要么没耐心读完上面所有的内容,要么能够通过例子更好地学习。这里是一篇关于如何使用迭代的快速参考。但是,如果你碰上了任何问题,你就得借助Croque在上面讲解的技巧来解决。我强烈建议你在参考这部分章节之前,至少先试着把上面的内容读一遍。我会以SCP-9000作为示例,你需要把“SCP-9000”换成自己的编号。


5.1:创建段落(FRAGMENT)4


首先,确定你的迭代作品需要多少个页面。假设你想要三个,利用通用页面创建器创建三个新页面,全部都是fragment分类。重要:以你想要显示的顺序依次创建你的页面。这样一来,你的三个页面就是“fragment:scp-9000-1”、“fragment:scp-9000-2”和“fragment:scp-9000-3”。第一页填上第一迭代的内容,第二页填上第二迭代,如此下去。很显然,你并不是一定要像这样命名页面,但这样更简单而且很直观。提醒:不要在这些页面上添加评分模块,这是迭代的基本特征。


5.2:父页面


下一步,创建父页面。既然我们写的是SCP-9000,我们点击系列中心页上的空位,然后创建页面,填上:

[[>]]
[[module Rate]]
[[/>]]

[[module ListPages  category="fragment" parent="." limit="1" order="created_at" offset="@URL|0"]]
%%content%%
[[/module]]

[!-- http://scp-wiki-cn.wikidot.com/fragment:scp-9000-1 --]
[!-- http://scp-wiki-cn.wikidot.com/fragment:scp-9000-2 --]
[!-- http://scp-wiki-cn.wikidot.com/fragment:scp-9000-3 --]

位于[!-- --]之间的内容是注释,注释不会显示在页面上,也不会作为语法代码被解析。它们最主要的用途就是方便编辑、以及翻译者。


5.3:父与子


现在,返回段落页,将它们的父页面设置为你的主页面。一张图片胜过千言万语。

parenting.png

parenting2.png

为每个段落页都重复一遍,从下面自动填充的菜单中选择“scp-9000”。

来自Croque的提示:在沙盒里,父页面必须是collab分类的,否则你会在尝试设置父页面时出现错误。你可以通过如下方式更改分类:滚动至页面底端,点击“+ 选项”然后点击“重新命名”,接着在名称前面粘贴“collab:”。


5.4:链接


显然,你需要在页面上添加前往其他页面的按钮。你不能使用通常的超链接。既然文章最初显示的是“fragment:scp-9000-1”的内容,则需要前往“fragment:scp-9000-2”的链接。为此,我会在“fragment:scp-9000-1”的最下面添加类似这样的东西:

[[>]]
[http://scp-wiki-cn.wikidot.com/scp-9000/offset/1 下一迭代]
[[/>]]

“offset/1”会指向一个显示“fragment:scp-9000-2”内容的页面。接着在“fragment:scp-9000-2”页面上添加类似的链接,额外加上一个后退的链接。

[[<]]
[http://scp-wiki-cn.wikidot.com/scp-9000 上一迭代]
[[/<]]

[[>]]
[http://scp-wiki-cn.wikidot.com/scp-9000/offset/2 下一迭代]
[[/>]]

“fragment:scp-9000-3”也是如此


5.5:大功告成


如果你正确地跟随说明去做了,应该就能成功。打开scp-9000页面,应该会显示fragment:scp-9000-1的内容,同时有一个指向offset/2的链接,这个链接能够显示fragment:scp-9000-2的内容,如此下去。它们应该共用相同的评分模块,那就是整个迭代的得分。如果你还有任何的问题或者疑惑,请随时私信我。

你的,RounderhouseRounderhouse。👋

除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License