Skip to content

ONI-Wiki-zh/workflow-summary

Repository files navigation

ONI zh Wiki Workflow——Technical details in nutshells

本文档旨在总结缺氧中文 wiki 的组成架构,介绍部分技术细节,以供编辑者参考。

由于内容架构复杂,小编精力有限,本文档组织形式可能较为混乱,也难以囊括各编辑者所需要的一切信息。欢迎各位编辑者一起补充、完善本文档!

TL;DR

工作流示意图

MediaWiki 简介

目前,缺氧中文 wiki 搭建在 Fandom 维基农场上,其底层软件为 MediaWiki。简单来说,wiki 的绝大多数功能都是由 MediaWiki 提供的。它负责数据的存储、读出和解析等等。严格来说,MediaWiki 负责了站点内部的所有底层工作流,如解析 wikitext 等。本文档不会介绍这些底层工作。关于 MediaWiki 的更多信息,可参见 Mediawiki.org

小知识:MediaWiki 是为 Wikipedia 项目开发的软件,也是(几乎?)所有维基农场使用的维基软件。其他的维基软件有 TWiki 等等。各个维基软件之间差异极大。

资源分布

缺氧 wiki 的相关资源,按是否储存在站点内可粗略分为站内资源站外资源。一般而言,站内资源是所有人都可直接看到并修改的,而站外资源通常由个人或团体开发,不总是面向所有人开放。

站内资源

站内资源指的是直接储存在站点上(即 Fandom 服务器中)、对使用者可见的资源(即不包括仅服务器管理者可见的内部文件,比如配置文件等)。它们在底层由站点的 MediaWiki 软件管理。站内资源主要包括:

  • 文案:wiki的核心内容。
  • 图片:主要为游戏贴图。
  • 模板/模块:用于辅助页面的渲染/内容生成。
  • 其他资源:如 JavaScript 脚本、CSS 等。

作为使用 MediaWiki 的 wiki,缺氧 wiki 的站内资源均以页面的形式呈现。例如,图片通常位于“File:”命名空间,模板和模块位于“Template:”和“Module:”命名空间。MediaWiki 也包含版本控制功能,所有页面的历史版本均有保存。

下文中关于站内资源的导出方式,主要参照了 MediaWiki.org 的相关页面,如 mw:Manual:Backing_up_a_wiki

文案

作为使用 MediaWiki 的 wiki,缺氧 wiki 的文案均以 wikitext 格式撰写。wikitext 可由 MediaWiki 解析为 HTML,进而显示在网页上。所有人均可阅读任一页面的文案,有权限者可编辑文案。

  • wikitext 是 MediaWiki 特有的标记语言。
  • 编辑权限是可设置项。在目前(2024.1),缺氧中文 wiki 允许所有人编辑所有页面(除个别保护页面外),包括未注册用户。
  • 具体地说,文案内容是 MediaWiki 数据库(database)的一部分。MediaWiki 数据库负责储存站点的页面内容、用户信息、元信息等。

MediaWiki 提供了页面内容导出功能(位于特殊页面“Special:导出页面”),能够以 XML 格式导出给定页面列表的内容(包括文案和其他页面信息,如历史版本)。不过,据称此方法一次最多只能导出 35 个页面(见),且 XML 文件大小不超过 1.8MB(见)。

关于导出页面功能,可以参见此页面

MediaWiki 亦以 php 脚本的形式内置了批量导出全站点页面内容的功能,但需要能够访问服务器 Shell 才能运行,因此建立于维基农场上的 wiki 无法使用此功能。因此,一般而言批量导出所有页面内容需要使用(第三方)工具,如 MediaWiki Dump Generator(可参见此页面)。Fandom 在 Special:统计页面提供了一键导出所有页面内容的功能(Fandom 称为数据库转储)。

图片

如上所述,站内图片作为 MediaWiki 文件系统的一部分也储存在站点服务器内。浏览者可以自由上传、浏览和下载站内图片。这些图片可被文案调用,进而显示在页面上。

小提示:站内图片、软件设置文件、MediaWiki 扩展等,储存在 MediaWiki 文件系统(File System)中。此页面简略提到了 MediaWiki 的数据库与文件系统。

MediaWiki 没有内置的图片批量导出功能。批量导出图片需要使用第三方工具或自行制作的脚本。

模板/模块

模板(Template)是一段 wikitext,一般是多个页面同时使用的同质内容。通过在这些页面中调用同一个模板,可以达到简化文案,增加文案可读性的作用。

模块(Module)是一个(Lua)程序。在启用了 MediaWiki 的 Scribunto 扩展后,可以在 wikitext 中调用编程语言程序(目前只支持 Lua)来辅助生成页面内容。模块之间也可以互相调用。

其他资源

其他资源包括自定义 Javascript、CSS、由 MediaWiki 调用的页面等。

站外资源

截至目前(2024.6),站外资源主要有以下几个项目/组成部分:

  • BotNotIncluded:由 DDElephant 开发的项目,主要包含以下功能:
    • 读取部分游戏数据,转化为 Lua 格式后上传至站内模块
    • 读取站内图片并备份至 oni-zh-cn@outlook.com 的 OneDrive 中
    • 比对中、英文站点,记录潜在的过时页面和有误的跨语言链接
    • 修正站内文案格式
  • OniExtract2024:由cnctemaR开发的项目,主要包括以下功能:
    • 以json文件的格式,导出游戏各类数据(建筑、小动物等)。
    • 导出游戏内各个实体(建筑、小动物等)的贴图。
  • 站外脚本:主要包括被直接调用而未导入到站内的站外脚本,比如 Lua 模块、JS 脚本和 CSS 文件等。
    • 现阶段(2024.1),一部分站外脚本来自于 Fandom dev wiki

wiki日常维护

站内工作

文案编辑

对wiki上各个页面进行维护。主要是在命名空间为main的页面进行活动。

常见的任务类型有

  • 创建页面并完善
  • 更新旧页面
  • 检查重复的页面
  • 日常巡查,发现无法正常显示的页面

模板维护

一个好的模板可以使wiki文章的编辑工作事半功倍。配合站外工作流,可以通过各类站外项目,将wiki上大量的编辑&校正工作,交由代码来自动化完成。

信息框模板

信息框类型的模板,它们的模板/模块之间的关联关系如下表所示。

类型 Template Module Module:Data Module引用
建筑 Template:建筑信息框 Module:建筑信息框 Module:Data/Buildings Module:信息框/建筑
小动物 Template:小动物信息框 Module:小动物信息框 Module:Data/Critters Module:信息框/小动物
植物 Template:植物信息框 Module:植物信息框 Module:Data/Plants Module:信息框/植物
元素 Template:元素信息框 Module:元素信息框 Module:Data/Elements
装备 Template:物品信息框 Module:物品信息框 Module:信息框/物品
食物 Template:食物信息框 Module:食物信息框 Module:Data/Food Module:信息框/食物
间歇泉 Template:间歇泉信息框 Module:间歇泉信息框 Module:Data/Geysers
小行星 Template:小行星信息框 Module:小行星信息框 Module:Data/Worldgen/Worlds; Module:Data/Worldgen/Worlds/Expansion1; Module:Data/Worldgen/Clusters/Expansion1; Module:Data/Geysers; Module:信息框/小行星
星群(DLC) Template:星群信息框 Module:星群信息框 Module:Data/Worldgen/Worlds; Module:Data/Worldgen/Worlds/Expansion1; Module:Data/Templates/Poi/Expansion1; Module:信息框/星群
技术 Template:技术信息框 Module:技术信息框 Module:科技点 Module:信息框/技术
技能 Template:技能信息框 Module:技能信息框 Module:信息框/技能
生态 Template:生态信息框 Module:生态信息框 Module:Data/Worldgen/Biomes Module:信息框/生态
故事特质 Template:故事特质信息框

导航栏模板

导航栏类型的模板,它们的模板/模块之间的关联关系如下表所示。

类型 Template Module Module:Data
建筑 Template:建筑导航 Module:建筑导航
小动物 Template:小动物导航 Module:小动物导航
植物 Template:植物导航 Module:植物导航 Module:Data/Plants
元素 Template:元素导航 Module:元素导航 Module:Data/Elements
物品 Template:物品导航 Module:食物导航 Module:Data/Food
世界生成 Template:世界生成导航 Module:世界生成导航
游戏版本 Template:版本页脚 Module:版本导航
疾病 Template:疾病导航

预设模板维护

主题样式维护

Gadgets小工具管理

用户小工具参数设置

站外工作

游戏数据上传更新

解包游戏资产,提取出图片和游戏内数据。将处理好的数据更新至wiki。

工作流示意图

/data/schema/目录下的json文件,是用于对lua数据格式的定义文件。

以下是由OniExtract2024项目导出的json文件与wiki站点以Module:Data前缀的页面间的关联关系。

类型 json文件 lua文件 Module:Data
建筑 building.json Module:Data/Buildings
小动物 entities.json
植物 entities.json Plants.lua Module:Data/Plants
元素 elements.json
装备 equipment.json
食物 food.json Food.lua Module:Data/Food
间歇泉 geyser.json

Wiki巡查机器人

管理wiki站点的页面、数据库和代码文件

Wiki_bot挂载至Github Actions的工作流程

工作流示意图

格式修正工作流

工作流示意图

跨语言链接状态检查工作流

工作流示意图

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •