如何使用迭代
评分: +1+x

迭代序言

一段时间以来,迭代都因为过分困难而又繁琐享有不好的名誉,它总被认为是只有代码大佬才会想想的事之一。许多作者很想给他们的文章用点小妙招,但多半都被又长又容易搞错的程序吓跑。网站上许多知名的文章都用了迭代,并有着极高的Upvote数。其他的一些文章也使用迭代做魔杖释放它们的代码魔力。看到这些壮举,你很容易就觉得自己永远也搞不会这种东西了——然而,这篇指导准备改变这一点。

何为迭代?

从盘古开天地讲起,迭代到底是什么?迭代是一种不失去评分和评论而在一个页面里展现不同页面的内容的方法。这一特点使它对于新发现后的文章版本变化或CSS过渡动画等故事元素非常有用。

迭代是一构建在Wikidot的一名为“Listpages”的模块之上的功能。这一功能利用了网站上的一种特殊页面种类,即“段落(fragment)”页面。如果没有直连的链接,段落页对任何人都是不可见的。段落页是另一构建在Wikidot之上的功能,最常见的用法就是迭代,当然也可以用于其他页面里,比如版式(theme)或被include引用。它们不会在首页的“最近新增的页面”之上显示,或者出现于最高评分的页面里。

如何使用迭代?

好吧,现在你已经知道迭代如何运作了,我们也定义了一些新词汇,于是现在是时候把它们放进你的页面里了。我要从哪开始呢?首先你要做的就是创建一个“父页面”。读者在阅读你的整个文章时都将停留在父页面之上。它是给段落页表演的舞台。最好的说明方式是把它比喻成一个盘子。假设父页面是一个空空如也的盘子——就其本身而言空无一物——而你需要往上面放一些食物,也就是段落页。食物不能单独出现,它们得被盛在一些东西上——段落页也如此。而这时候就到了父页面,或者说盘子上场的时候了。它们单独出现时毫无用处,而当它们被组合在一起,你就有了一顿大餐/一篇文章。

所有你需要为了创建你的父页面去做的就是创建一个标准的页面。举个例子,你现在正处于http://backrooms-world.wikidot.com/how-to-use-offset这个页面上。而如果你在沙盒站里的话——那儿有个Wikidot的bug,你需要给页面名前加上“collab:”才能让它管用。举同一个例子,沙盒站里的这篇文的链接得是http://backroomsworldsandbox.wikidot.com/collab:offset-guide。对,这同时也代表着其他人也可以编辑父页面了,但这是严重的违规行为。请把你遇到的未经许可的编辑报告给职员,涉事者将被相应处理。

现在你已经创建了你的页面,随后你就要让它准备好迎接迭代。记住,页面的所有实际内容都不应出现在父页面上,而是在段落页中,随后将会讲到这些。为了格式化你的父页面,请遵循下方的模版:


(如果有需要的话,在此插入版式)

[[module css]]
(如果有需要的话,在此插入所有贯穿整个文章的CSS代码)
[[/module css]]

[[>]]
[[module rate]]
[[/>]]

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

------
[[>]]
[[collapsible show="著作信息" hide="隐藏著作信息"]]
[[*user 你的Wikidot用户名]]

(在此给出使用的图片的图源)

[[/collapsible]]
[[/>]]

让我们给这个模版说道说道。在这个页面的顶端,如果你想用版式的话,你得在那include(引用)你想用的版式。如果你的页面用的是网站默认的阈限版式或者你想给每个迭代用不同的版式,就忽略掉模版里的这个部分。在下面是CSS模块。你要在这里加入你想应用于所有页面的CSS。常见的放在这里的东西是引用字体,自定义div块或者版式相关的(比如改变文本颜色)。如果你不想放任何涵盖所有页面的CSS,就忽略掉模版的这个部分。再下面是评分模块。所有页面都要求有一个评分模块,这就意味着最好把它放在父页面上。否则你得在每个段落页上都加上它。再下面的就是实现魔法的代码了。若想让迭代奇效,这段代码是必要的。再下面的是你的著作信息折叠块,这也是所有迭代都要求有一个的,所以最好把它放在父页面上,避免做在每个页面上都复制黏贴一遍的无用功。你格式化父页面后,就可以开始创建段落页了。

要想创建段落页,最开始,你需要在页面名的开头加上“fragment:”。而在页面名的末尾加上一个数字。对于第一个段落页来说,那个数字是“0”。继续用这个页面的例子,第一个段落页叫做http://backrooms-world.wikidot.com/fragment:pages-0。段落页在沙盒里也得是这样的,一点不错。为了把这个页面链接到父页面,你需要去底部菜单点“选项”,然后点“父页面”,如图所示:


offset-guide-1

这个菜单显示之后,你需要在其中输入父页面的页面名。随即一个菜单会出现并询问你段落页需要链接到哪个页面。当你的页面名出现时,单击它。现在你设置好了你的段落页,随后你要开始写页面的实际内容了。你在段落页0中所写的任何内容都将在读者打开页面时首先出现,位列所有迭代或CSS转换之前。请仅在段落页0中放上你想要读者在其他任何迭代之前看到的东西。

注意:每次你编辑段落页时,你都需要空编辑一次父页面以刷新。一个BUG可能会导致整个页面不可逆地停摆,你肯定不想冒这个险对吧。再说一遍,每编辑一次段落页之后都空编辑一次父页面。

这之后,其实你只需要一遍一遍地重复这个过程,直到所有你需要的段落页都写好。对第一个段落页来说,链接是http://backrooms-world.wikidot.com/fragment:pages-0,下一个就是http://backrooms-world.wikidot.com/fragment:pages-1,以此类推。为了让读者进入下一个迭代,我们必须用另一个完全不同的链接。如果前面的所有步骤都已完美无缺,它才会起作用,否则它只会引向一个空页面。再再用这个页面做例子,去第一个迭代的链接是http://backrooms-world.wikidot.com/pages/offset/1。这段语法在沙盒站也适用。文章要是通过绿灯了,把你的段落页发到站上之后给它们标上“段落”标签。如果你忘了的话,职员也会帮你做的。

一个常见的错误就是用了连向段落页的链接而非这个特殊的链接,如果那样的话,在进入新页面后无法保留评分和讨论,不应该是那样的。你的页面要是出错了,就再检查一遍你用的是这个特殊的链接还是连向段落页的链接。另外,标准的三括号链接不适配迭代链接,也就是说你必须得用单括号链接。这一段要是对你来说看不懂的话就去看看Wikidot语法指南吧。

唷!说的可真多。尽管说这看着挺吓人的,但我肯定你最后会掌握它的窍门的。第一次总是很困难,但只要你度过了难关,下次再做可就毫不费劲了。

疑难解答

以下是一些常见的问题和它们的解决方式。迭代的程序很挑剔且困难,所以随时都可能遇到这些问题。

评分和讨论并未保持一致

如果你的评分和讨论在下个迭代并未保持一致,首先确保你链接的是下个迭代而非段落页。带你到下个迭代的链接应该是长这样的:http://backrooms-world.wikidot.com/pages/offset/1,而非这样的:http://backrooms-world.wikidot.com/fragment:pages-1

迭代链接引到了一个空页面

如果迭代链接失效了,首先确认你的链接没打错。迭代链接应当和父页面链接一致,除了结尾的“/offset/1”(或者其他数字,如果有多个迭代的话)。如果链接仍然无效,请确保你的代码是这样的:[http://backrooms-world.wikidot.com/pages/offset/1 显示的文本]而非这样的:[[[pages/offset/1|显示的文本]]]。如果还是没用的话,请确保你的段落页连到了网站上的正确页面。要是你东补西补之后还还还没用的话,那你可能是忘记在编辑段落页之后刷新父页面了,然后BUG降临到了你头上。如果是这样的话,那这个页面已经没救了,需要把代码转移到新页面上。

无法将段落页连至父页面

你是否在试图将段落页连接到父页面时得到了这段话作为回复?


offset-guide-2

要是确实是这段文字的话,那就说明你忘了在父页面的页面名前加“collab:”了。如果想改正这个错误,只需要去到“设置”,然后去“重新命名”,随后在页面名前加上“collab:”。这个错法只会在沙盒站出现,你无需在得到绿灯后发到站上时担心。

迭代页在段落页已连接的情况下还是空白的

如果发生的是这个错误,首先再检查一遍段落页是否连到了正确的父页面。如果仍然不管用的话,那就说明你在创建父页面之前就创建了段落页。当创建一个使用迭代的页面时,你创建页面的顺序对于Listpages代码的运作来说是极重要的。因此,你必须在创建页面时一丝不差地按照这个顺序。父页面必须在其他任何页面创建之前第一个创建。随后,你必须按照显示的顺序创建段落页。举个例子,段落页0需要是第二个被创建的页面,段落页1则是第三个,段落页2是第四个,以此类推。如果你在得到绿灯后发到站上时候没有遵循这个顺序,你需要删除所有的页面然后按照正确的顺序重新上传以修复这个问题。

小提示:如果你想要一种解决这个问题的简单方法,你可以同时打开父页面和多个段落页的编辑框,然后把沙盒里的代码复制黏贴进所有那些页面。只要所有代码都被复制黏贴完成而且编辑框都被打开着,你可以在几秒钟内保存所有段落页并且链接到父页面。使用这个方法之前记得把迭代链接改成站内的而非沙盒里的。

迭代顺序错乱

这是一个和上面的那个问题很相像的情形。如果你的迭代顺序错乱了,那就说明你创建段落页的顺序有错漏。举个例子,如果你在段落页0之前创建了段落页1,那页面就会把段落页1判断为段落页0,然后把它首先显示出来,你肯定不想要这样。如果你在沙盒站遇到了这个问题,那只要把两个段落页的代码互换就可以了。在绿灯之后,如果你在站上遇到了这个问题,你可以参考上个段落的小提示。


小提示和小技巧

以下是一些小提示和小技巧,你可以将它应用在写带有迭代的文的时候!如果你想要的话就随心所欲地把它们放到你的文里吧。

改变版式

你能用迭代做的最棒的事之一就是改变页面的板式。它可以被应用于类似于页面逐渐腐化,多部分文章等等的概念中!

所有可选的版式

切换字体

虽然有漂亮的CSS或者HTML可以做到这一点,但和代码作斗争非常而且。真正的大佬都在用迭代。如果你想要使用一种难以阅读的字体,并提供一种更易检阅的代替方案,那是时候使用迭代了!

教程:

密码锁

另一个高人气的小技巧就是用密码锁搭配迭代!MyrandFoxMyrandFox仁慈地写了一个特殊的可以把输入了正确密码的读者引到一个新的迭代的JavaScript代码,可能会对数据库或隐藏的补充材料的点子有帮助。自己试试吧!

例子:

教程:

弹出式CSS过渡动画

另一个很酷的小技巧是用迭代搭配弹出式过渡动画,例如在页面内容可见之前闪过几秒钟的视频。这个小技巧需要一些视频编辑能力,但在你完成后绝对是值得的。请确保节俭并且高明地使用这个小技巧,否则它只会变得恼人或滥用。

看看它是怎么奏效的!2

教程:

总结

恭喜!你已经通过了有关你所需要知道的段落页和迭代的速用课程。迭代是一种高人气且引人注目的小技巧,可以用于许多情境中。希望这篇指导可以移除迭代难如登天,只有CSS大师和代码大佬才能使用的偏见。如果你还有其他的问题,请随意给Natedagreat563Natedagreat563或者任何一名技术团队的人员DM或者PM。如果你在Discord上的话,请随意在#tech-support频道问问题。祝你代码写得愉快!

这儿是个连向迭代页的连接,如果你想要看看这个页面里使用的源代码的话就去看看吧。只要注意不要未经许可进行编辑哦。


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