自 2007 年以来,我一直是 Wiki 的深度使用者,Wiki 的内链功能,可能很好的将我的碎片学习有机整合,点连接成线,线延伸为面,面扩展为体,体交织为网,每一次信息的搜集和整理都留下痕迹,极大的缓解了我的精神内耗,真正的每一步都算数。

我使用过的 Wiki 程序,包括 Confluence,DokuWiki,MediaWiki,其中 Confluence 在 2021 年 2 月因 Atlassian 停售 Server 版(本地私有化部署版)而中止,DokuWiki、MediaWiki 依然在保持高频次的内容更新。为了好好的记笔记而搭建网站,而且不止一个网站,我确实是一个异类,但做自己就好。

本文的主题是 DokuWiki,它是以上三种 Wiki 程序中最轻量的那个,相对而言,我用得也最少,最成功的产品是前公司北京分部的技术文档中心。但从 2023 年 10 月起,我决心投入更多的时间,对 DokuWiki 的内容进行维护。

DokuWiki 用 PHP 语言开发,基于文本文件存储而不依赖于关系型数据库,对系统、环境的要求很低,却具备完整的 Wiki 功能,有丰富的插件扩展,且支持高度的自定义,适合企业知识库、私人笔记、软件文档、项目空间、内网 CMS 等,免费开源。

感谢住在柏林的 Andreas Gohr 为奉献了这么好的产品!

正如写作是我学习的方式,使用一款软件也是我提升自己的途径。这些年来,我对 MediaWiki、DokuWiki 都进行了深度的研究,主要的目标就是自定义设置,以更适合我自己的需求,在此过程中,也学会了不少 PHP 、JavaScript、CSS 的知识,更学会了不少优秀的软件设计思路,可谓一举多得。

当然,最初的维护都比较暴力,因为没有认真的研读官方文档,比如为了给 DokuWiki 添加备案号,我直接修改了 inc/template.php 文件的 1541 行;为了实现文本的两端对齐效果,我直接修改了 lib/tpl/dokuwiki/css/basic.less,固然能达到我的要求,但不推荐这种穿墙打洞的方式。

阅读官方的三篇文档:

  1. https://www.dokuwiki.org/devel:css
  2. https://www.dokuwiki.org/config#configuration_files
  3. https://www.dokuwiki.org/include_hooks

可以发现 DokuWiki 遵循约定大于配置(convention over configuration)的设计范式,自定义网站样式,可以编辑:

  1. lib/styles/all.css
  2. lib/styles/screen.css
  3. lib/styles/print.css
  4. conf/userstyle.css

自定义 HTML 内容,可以编辑:

  1. lib/tpl/dokuwiki/meta.html
  2. lib/tpl/dokuwiki/header.html
  3. lib/tpl/dokuwiki/footer.html

如果需要 JavaScript 支持,可以编辑:

  1. lib/tpl/dokuwiki/footer.html
  2. conf/userscript.js

通过这种结构化的配置和修改,即使多年以后需要重新维护,也能很快定位代码。而此前我想修改备案号,真的记不起当初是在哪里添加的,只能把整个网站的源码下载到本地,导入 VS Code 全局搜索才找到位置。

有了以上的研究和理解,要给 DokuWiki 添加/修改备案号,就非常简单了:

cd lib/tpl/dokuwiki
vim footer.html

添加以下代码:

<div><a href="https://beian.miit.gov.cn/">京ICP备XXX号</a></div>

收工。

最后修改:2023 年 11 月 06 日
如果觉得我的文章对你有用,请随意赞赏