原创文章,谢绝转载。
关于云笔记的产品,市面上已经有许多,但是吧,要么收费,要么只有本地功能,要么对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嵌入刚刚说的首页。
那个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表的介绍。
键名 | 类型 | 属性 | 解释 |
---|---|---|---|
cid | int(10) | 主键,非负,自增 | post表主键 |
title | varchar(200) | 可为空 | 内容标题 |
slug | varchar(200) | 索引,可为空 | 内容缩略名 |
created | int(10) | 索引,非负,可为空 | 内容生成时的GMT unix时间戳 |
modified | int(10) | 非负,可为空 | 内容更改时的GMT unix时间戳 |
text | text | 可为空 | 内容文字 |
order | int(10) | 非负,可为空 | 排序 |
authorId | int(10) | 非负,可为空 | 内容所属用户id |
template | varchar(32) | 可为空 | 内容使用的模板 |
type | varchar(16) | 可为空 | 内容类别 |
status | varchar(16) | 可为空 | 内容状态 |
password | varchar(32) | 可为空 | 受保护内容,此字段对应内容保护密码 |
commentsNum | int(10) | 非负,可为空 | 内容所属评论数,冗余字段 |
allowComment | char(1) | 可为空 | 是否允许评论 |
allowPing | char(1) | 可为空 | 是否允许ping |
allowFeed | char(1) | 可为空 | 允许出现在聚合中 |
再看看relationships表:
键名 | 类型 | 属性 | 解释 |
---|---|---|---|
cid | int(10) | 主键,非负 | 内容主键 |
mid | int(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搭建自己的知识管理系统(下),这个是美化教程。
有啥问题可以在评论区问我嗷。