原创文章,谢绝转载。
关于云笔记的产品,市面上已经有许多,但是吧,要么收费,要么只有本地功能,要么对Markdown支持不友好(Up to 2022.1.30)。目前发现的一个比较好的方案是蚂蚁笔记,支持私有化部署,但是money花费不太友好(其实也不是很贵,但是对于我这种域名没有备案,开vps没有钱,只能苟到使用虚拟主机的人来说雀食是有点贵),我突然想到Typecho很轻量,而且虚拟主机便可搭建,一年大概不到一百块就能搞定,便想用这个搞一波。

当然,使用Markdown。

一、配置环境并安装好Typecho

安装过程这个我就不说了,自己去搞吧。


服务器环境

我使用的服务器环境是(实在是太简朴了,不要喷。。。)

  • Apache 2.4.7 容量100M
  • MySQL 5.6.40 容量20M
  • PHP7.4

别看web空间只有100兆,安装个Typecho绰绰有余,又没有别的乱七八糟的东西,其实10M大小就够了。

至于图片储存当然是使用图床了,图床可以使用免费的,但是毕竟是自己的知识库,知识无价,还是使用大厂储存桶+CDN好些。

至于数据库——就是存放一些字符串的地方——一对文字你要多大的空间?写超长篇小说吗。

由于只有我一个人访问,所以我用的最低的套餐,省钱啊。


关于Typecho配置
1.关于主题:

我个人认为Typecho自带的主题就挺好的,很简洁,但是不太适合做知识库,我感觉他的文字字体以及各个方面雀食是有点太朴素了。

免费主题我推荐MWordStar主题,比较适合做知识库。——详细介绍

其实如果不考虑Typecho的简洁轻量,可以移步到WordPress,听说最近WordPress也更新地支持Markdown了。我记得WordPress上有一款免费主题就叫WIKI,做知识库挺好使的。

2.关于编辑器:

我个人是比较喜欢Markdown的,但是有些人(包括我以前)对Markdown不太熟悉,所以我以前使用的是富文本编辑器,这里推荐一下百度开源的UEditor,这个是我最喜欢的富文本编辑器。

这个可以到GitHub上搜一下已经有人做成了插件,去下载一下就行了。

其他的编辑器虽然可能功能上和UEditor差不多,但是UEditor更符合国人习惯,包括字体也有宋体,楷体等中国字体选项。

这些都是可以的,看你自己喜欢哪一个。

二、构建前端页面

当你安装好了以后,基本的功能就出现了——分类,撰文,评论,管理等等。

但是,一个知识库管理系统怎么能就这么简洁,至少应该得有分类的目录吧,就是像一个清单,你的所有的笔记一目了然才行。

所以——下一个任务:构建一个简单的前端框架。

PS:我很菜,是个新手,所以我得用Dreamweaver帮忙。

大概就是这么一个概念图:

制作一个三列四行的表格(先只管去创建表格,其他的美化事宜请看下篇),自己合并单元格制造出上图的感觉。

其中左边的两列是用来显示四个分类里面的所有笔记列表。

最右面的那个最大的单元格是用来放一个iframe嵌入刚刚说的首页。

提示一下:自己的资料库肯定是不愿意别人看见的,一个小技巧,把默认首页改为index.htm,然后弄一个假的404页面跳转到百度或者弄一个Silence is Golden的页面都行

那个iframe可以写成这样,注意一定要加上target属性。

<iframe src="" name="workplace" width="100%" marginwidth="0" height="100%" marginheight="0" scrolling="auto" frameborder="0"></iframe>

然后左边那四个分类区域也加上四个iframe,引用四个已经创建好的索引HTML文件,关于创建索引页面的detail在下面。

左上角的那两行留着写几个固定的链接,像是这样:

这样

其中Search链首页,New链Typecho中的“撰写新文章”,login当然链login。

这个1234567分别链分类的更新索引页面,这个下面会提到。

如何写链接代码下面也会提到。

三、利用PHP创建分类索引页面

在此之前,先让我们来了解一下Typecho的数据库设计

这个是官网的contents表的介绍。

键名类型属性解释
cidint(10)主键,非负,自增post表主键
titlevarchar(200)可为空内容标题
slugvarchar(200)索引,可为空内容缩略名
createdint(10)索引,非负,可为空内容生成时的GMT unix时间戳
modifiedint(10)非负,可为空内容更改时的GMT unix时间戳
texttext可为空内容文字
orderint(10)非负,可为空排序
authorIdint(10)非负,可为空内容所属用户id
templatevarchar(32)可为空内容使用的模板
typevarchar(16)可为空内容类别
statusvarchar(16)可为空内容状态
passwordvarchar(32)可为空受保护内容,此字段对应内容保护密码
commentsNumint(10)非负,可为空内容所属评论数,冗余字段
allowCommentchar(1)可为空是否允许评论
allowPingchar(1)可为空是否允许ping
allowFeedchar(1)可为空允许出现在聚合中

再看看relationships表:

键名类型属性解释
cidint(10)主键,非负内容主键
midint(10)主键,非负项目主键

看完这两张表就够了。

我们可以发现每个文章都有自己的cid,对应一个mid,这个对应关系可以到relationships表中找到。

那么思路就来了:

用PHP数组循环找到所有mid==1的cid(这里就是创建分类一的索引HTML),然后再到数据库中查询对应的cid的title字段,输出在套上链接,得到这样的内容:

<p><a href="http://example.com/index.php/notes/1.html" target="workplace">XXXXXXXXXX</a><a href="http://examplecom/admin/write-post.php?cid=1" target="workplace">Edit</a></p>
<p><a href="http://example.com/index.php/notes/2.html" target="workplace">XXXXXXXXXX</a><a href="http://examplecom/admin/write-post.php?cid=2" target="workplace">Edit</a></p>
<p><a href="http://example.com/index.php/notes/3.html" target="workplace">XXXXXXXXXX</a><a href="http://examplecom/admin/write-post.php?cid=3" target="workplace">Edit</a></p>

再加上 <meta charset="utf-8">这么一个必要的文件头就行了。

同理创建这么N个PHP文件生成对应的HTML索引文件就行了。

四、最后

当然,表格列数可以自定义,比如我最后就加了一列,还调整了顺序。

当然,看到这里你得到的不是最终结果,我下面放的截图是最终结果。

你得接着看利用Typecho搭建自己的知识管理系统(下),这个是美化教程。

有啥问题可以在评论区问我嗷。

如果觉得我的文章对你有用,请随意赞赏