打造自己的静态博客系统(二)
决定用PHP开发后,开始思考博客的额外功能。既然是自己写博客系统,那就得有自己独特的东西在里面。
几乎所有的站长都面临一个问题:提高用户黏度,降低跳出率。当然,大多数站长都用了随机文章、相关文章、热门文章等边栏提高用户黏度。
但我突然想起了迪斯尼公园修人行道路的故事:据说当时迪斯尼乐园盖好后,设计者没想好人行道该怎么设计,于是在公园内遍地都铺满了草坪,顾客就在草坪上随意走,久而久之,便形成了道路。真就如鲁迅爷爷说得那样:世上本没有路,走的人多了也就成了路。于是乎,设计者突然灵感爆发,一拍大腿:成了!于是设计者便在新开辟的路上,铺上漂亮的地板成为了人行专用道路。
网站是不是也能这样呢?
记录下用户的来源地址,并储存。做一个推荐边栏,通过排序预测用户可能点击的下一系列链接…
这个想法挺好,但是不得不说一个现实的问题:如何实现?
在我目前的知识库里,Javascript可以获得页面的来源地址,但是作为一个静态页面,如何存入数据库呢?
Ajax!!!
这样一个功能,自己开发起来非常简单,但是如果要用插件的形式实现在其它博客系统里,却面临着很多问题。
当然这也就牵扯到一个问题:不得不用数据库了。说实话,不用数据库的博客系统我还有点不习惯。静态博客系统用数据库,哈,这也是本博客系统的特点之一吧!
于是乎,有如下数据库中表的结构如下:
-- 文章表
CREATE TABLE `post` (
`P_Id` bigint(20) NOT NULL AUTO_INCREMENT, -- 文章ID
`P_Title` text NOT NULL, -- 文章标题
`P_Content` longtext NOT NULL, -- 文章内容
`P_Category` int(11) NOT NULL, -- 文章分类
PRIMARY KEY (`P_Id`)
);
-- 用户浏览痕迹表
CREATE TABLE `post_map` (
`C_Id` bigint(20) NOT NULL, -- 当前文章ID
`N_id` bigint(20) NOT NULL, -- 下一篇文章ID
`M_Count` int(10) unsigned zerofill NOT NULL DEFAULT '0', -- 点击次数
PRIMARY KEY (`C_Id`,`N_Id`)
);
-- 标签表
CREATE TABLE `tag` (
`T_Id` int(11) NOT NULL AUTO_INCREMENT, -- 标签ID
`T_Name` varchar(20) NOT NULL, -- 标签名
`T_Count` int(11) unsigned zerofill NOT NULL DEFAULT '0',
PRIMARY KEY (`T_Id`) -- 标签文章数
);
-- 文章标签关系表
CREATE TABLE `tag_relative` (
`P_Id` bigint(20) NOT NULL, -- 文章ID
`T_Id` int(11) NOT NULL, -- 标签ID
PRIMARY KEY(`P_Id`,`T_Id`)
);
-- 文章分类表
CREATE TABLE `category` (
`C_Id` int(11) NOT NULL AUTO_INCREMENT, -- 分类ID
`C_Name` varchar(20) NOT NULL, -- 分类名
`C_Count` int(11) unsigned zerofill NOT NULL, -- 分类文章数
PRIMARY KEY (`C_Id`)
);
/*因为我比较懒,再加上本身为轻量级的博客,关系表的外键、建立索引之类的就直接省略了*/
数据库建立好之后,就要开始写后台操作了,Fighting~~~