你与高级格式

Tips:本文为旧CE站文章

评分: 0+x

CSS指导

CSS是一种可以在网页里使用的代码,使用CSS可以干到一些难以想象的事情,比如制作组件和版式等,一般来说理论上你并不会用到这些东西,因此只做部分指导

如果你想使CSS请用以下模版

[[module CSS]]
中间是CSS代码
[[/module]]

CSS指导1-“根选项”

首先我们要知什么是根选项,根选项一般是位于CSS开头的部分,根选项可以更改版头图标,版头标题,版头副标题等内容

[[module CSS]]
:root {
    --logo-image: url("你的图片链接");
    --header-title: "这是主标题";
    --header-subtitle: "这是副标题";
 [[/module]]

CSS指导2-修改页面颜色

一般来说你可以使用以下模版来修改页面颜色,颜色请使用“A,B,C”格式
例如“255,255,255”是白色,其它颜色可以上网查

[[module CSS]]
:root {
    --logo-image: url("你的图片链接");
    --header-title: "这是主标题";
    --header-subtitle: "这是副标题";

—white-monochrome: 颜色;
—very-light-gray-monochrome: 颜色;
—light-gray-monochrome: 颜色;
—gray-monochrome: 颜色;
—dark-gray-monochrome: 颜色;
—black-monochrome: 颜色;
—medium-accent: 颜色;
—dark-accent: 颜色;
—pale-gray-monochrome: 颜色
—bright-accent: 颜色;
[[/module]]

CSS指导3-CSS的其它用途

除了以上用途之外,CSS还可以用来制作组件等,但由于这部分内容过于复杂,因此并不列出,如果需要可以去看专业的教程,同时你也可以使用该工具来快速制作版式

多页迭代

前言


首先我们要知道什么是迭代?简单来说迭代是一种通过ListPages模块来实现的功能,而ListPages则是一种 Wikidot 模块,它可以让多个不同的页面的评分和讨论一模一样,在一般情况下一个迭代里有一个父页面和多个子页面,而这通常会被认为是魔法,因为在一般情况下,另的文章只是的用折叠块,而迭代可以直接把多个不同的页面串在一起,你甚至可以用迭代做出一个互动游戏,这简直就是对另人的降维打击,因此我收集并整理了这篇文章的内容,来尽量的简单介绍迭代

有关父页面的部分

首先我们要知道什么是父页面,简单说的话父页面就是包在子页面外的一套外壳,里面包含着CSS代码,作者信息,以及其它的东西,一般来说你只需要一个父页面就够,但是你也可以在子页面里面再创建一个父页面,但我不建议你这样做,而父页面一般是通过以下代码来实现

[[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" -这个代码会以创建的日期来排列页面,因此正常来说,你必须按顺序创建子页面
limit="1" — 这限制了 ListPages 所选择的页面数量最多为 1,即只有一个页面,另外你也可以把数量改为2或者3,但我不建议你这样做
%%content%% — 这个占位符意味着,ListPages 会将所选页面的全部正文内容转存到当前页面中,包括 CSS 模块,而不仅仅只是页面标题或者是评分这样的一小段信息。
offset="@URL|0" —则是偏离值,在正常情况下一个父页面里面有多个子页面,但父页面在“limit=1”的作用下只能显示1个页面,而偏离值可以让父页面显示其它的子页面


在了解这些代码的作用后,你可以参考以下模版来制作父页面
[[include :此处应该插入版式]]

[[module css]]
这是CSS代码,它会对所有的子页面有效
注意:如果子页面内有CSS代码,那么子页面的CSS代码会替代该代码生效
[[/module]]
[!--同时如果CSS代码位于底下,那么子页面的CSS代码会失效(本人亲测)--]
[!--以下为子页面链接--]
[!-- http://r-sandbox-cn.wikidot.com/fragment:wiki-code-guidance#toc6-1 --]
[!-- http://r-sandbox-cn.wikidot.com/fragment:wiki-code-guidance#toc6-2 --]
[!-- http://r-sandbox-cn.wikidot.com/fragment:wiki-code-guidance#toc6-3 --]
[!--注意!请将“wiki-code-guidance#toc6”换成在“r-sandbox-cn.wikidot.com/”之后的部分! --]

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

所有在子页面上面的部分

[[module ListPages category="fragment" parent="." order="created_at" limit="1" offset="@URL|0"]]
%%content%%
[[/module]]
所有在子页面之下的部分

----
[[collapsible show="作者信息" hide="关闭"]]
[[user* 你的维基账号名称]]
[链接 图片来源]
[[/collapsible]]

另外虽然我并不建议你在最开始就创建父页面,因为每编辑一次子页面,就要空编辑一次父页面,毕竟你也不希望你的努力化为乌有吧? 但这是依旧是最好的方法,同时在沙盒站里父页面必须是“collab”分类,否则这将会导致子页面在添加父页面时出现问题


有关子页面的部分

首先子页面一般来说与父页面有以下不同的地方

  • 子页面包含了所有正文内容,而父页面没有;

(但在这篇文章中子页面只改变了结局)

  • 子页面包含了供读者点击的不同的 offset 链接;
  • 父页面包含了评分模块和所有 CSS 格式

(但在子页面里面依旧可以使用CSS代码)

同时与父页面不同的是子页面并不是“collab”分类,而是“Fragment”分类,我希望你应该不会弄错这个的



单页迭代

(注:本处内容参考了中分中的该指导中中的部分内容)
与多页迭代不同的是单页迭代只需要一个页面,就可以创造出一种和多页迭代一样的效果,并且比多页迭代更加的好用,好编辑,但相比多页迭代,单页迭代有更多的限制,而一般来说通常是使用以下模版来实现单页迭代的

[[include :此处应该插入版式]]
[[module css]]
CSS代码
[[/module]]

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

所有迭代之上的东西
[[module ListPages offset="@URL|0" range="."]]
%%content{2}%%
[[/module]]
[[module ListPages limit="@URL|0" range="." urlAttrPrefix="page2"]]
%%content{3}%%
[[/module]]
[[module ListPages limit="@URL|0" range="." urlAttrPrefix="page3"]]
%%content{4}%%
[[/module]]
[[module ListPages limit="@URL|0" range="." urlAttrPrefix="page4"]]
%%content{5}%%
[[/module]]
[!--
====
第1迭代的文本
[http://r-sandbox-cn.wikidot.com/wiki-code-guidance#toc8/offset/1/page2_limit/1 第2迭代的链接]
====
第2迭代的文本
[http://r-sandbox-cn.wikidot.com/wiki-code-guidance#toc8/offset/1/page3_limit/1 第3迭代的链接]
====
第3迭代的文本
[http://r-sandbox-cn.wikidot.com/wiki-code-guidance#toc8/offset/1/page4_limit/1 第4迭代的链接]
====
第4迭代的文本
[http://r-sandbox-cn.wikidot.com/wiki-code-guidance#toc8/pagename 第1迭代的链接]
====
--]
所有迭代之下相同的部分
----

[[>]]
[[collapsible show="作者信息" hide="关闭"]]
[[*user 你的维基名称]]
[[/collapsible]]
[[/>]]

而在使用单页迭代时请注意以下事项
  1. 所有迭代之上相同的部分会显示在所有迭代的开头,例如评分模块。
  2. 第1迭代的文本~第4迭代的文本为相应迭代的正文。这部分一如通常的wikidot一样编辑(也可以使用CSS模块或html模块)。但是,不能使用ListPages生成页面列表的模块(这和使用了子页面迭代时的情况相同)。另外,请注意一定不能使用注释()。
  3. 所有迭代之下相同的部分会显示在所有迭代的结尾。
  4. 将每个链接的“ r-sandbox-cn.wikidot.com/wiki-code-guidance#toc8”修改为你的页面的地址,也别忘记修改链接的文本。
  5. 要增加迭代,将如下所示的3行ListPages模块添加到相同格式的代码之后。更多额外的迭代则需要将urlAttrPrefix="page5"中的数字5和%%content{6}%%中的数字6依次递增。


例如:

[[module ListPages limit="@URL|0" range="." urlAttrPrefix="page5"]]
%%content{6}%%
[[/module]]

并且同时需要在末尾的“====”之后添加新的“====”

工作原理

该系统的核心在于使用====对内容进行划分。在wikidot语法中,====上下会被视作不同的部分进行处理。这在通常的页面显示上没有什么实际意义,但是与ListPages模块组合使用就能发挥出巨大的作用。

ListPages模块实质上,是一种能够根据标签或作者等预定条件创建页面列表的模块。一般会使用%%title%%和%%created_by%%之类的元素来显示页面标题、作者、评分等。其中的%%content{n}%%元素用于显示页面的第n部分,也就是利用====划分出的不同片段。另外,通常在ListPages里会出错的CSS模块,使用%%content{n}%%调用后也能正常运行。基于以上所述,接下来将会解释单页迭代语法的原理。

[!--
====
~正文~
====
--]

而在语法的这一部分中,所有迭代的正文被划分为不同的片段并被标记为注释。在这种情况下读取页面,无论其中有任何语法或者模块都会被隐藏,并不会影响页面的内容。

[[module ListPages offset="@URL|0" range="."]]
%%content{2}%%
[[/module]]

而对于第2及以后的迭代,“limit”表示列表最多列出的项目数,默认设置为0时即隐藏,设置为1时即显示。如果有多个ListPages模块,为“urlAttrPrefix”设置字符串即可避免冲突,例如设置urlAttrPrefix="page2",在URL地址后添加/page2_limit/1,则只会把limit="1"传递给单个特定的模块。URL选项可以设置多个,在所有模块均为默认设置的情况下仅显示第1页,而在/offset/1/page2_limit/1的情况下,将第1页隐藏的同时显示第2页。这样便可以实现页面切换的效果。

迭代随机页

通过设置order="random"来随机显示迭代,这种方法只能在带有子页面的迭代中使用。如果你想在单页迭代上也实现随机显示的效果,可以在第1迭代上添加一个html模块,用javascript脚本跳转到一个随机的链接。示例如下:

<script type="text/javascript">
window.onload = function(){
var rand = Math.floor( Math.random() * 5 ) ;
switch (rand){
  case 0:
    parent.location.href = "http://scp-wiki-cn.wikidot.com/esoteric-syntax#toc21";
    break;
  case 1:
    parent.location.href = "http://scp-wiki-cn.wikidot.com/esoteric-syntax/offset/1/page2_limit/1#toc21";
    break;
  case 2:
    parent.location.href = "http://scp-wiki-cn.wikidot.com/esoteric-syntax/offset/1/page3_limit/1#toc21";
    break;
  case 3:
    parent.location.href = "http://scp-wiki-cn.wikidot.com/esoteric-syntax/offset/1/page4_limit/1#toc21";
    break;
  case 4:
    parent.location.href = "http://scp-wiki-cn.wikidot.com/esoteric-syntax/offset/1/page5_limit/1#toc21";
    break;
}
}
</script>

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