自 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
,固然能达到我的要求,但不推荐这种穿墙打洞的方式。
阅读官方的三篇文档:
- https://www.dokuwiki.org/devel:css
- https://www.dokuwiki.org/config#configuration_files
- https://www.dokuwiki.org/include_hooks
可以发现 DokuWiki 遵循约定大于配置(convention over configuration)的设计范式,自定义网站样式,可以编辑:
- lib/styles/all.css
- lib/styles/screen.css
- lib/styles/print.css
- conf/userstyle.css
自定义 HTML 内容,可以编辑:
- lib/tpl/dokuwiki/meta.html
- lib/tpl/dokuwiki/header.html
- lib/tpl/dokuwiki/footer.html
如果需要 JavaScript 支持,可以编辑:
- lib/tpl/dokuwiki/footer.html
- 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>
收工。