基于Typecho的社区系统1
想法
作为一款轻量级的博客程序,却有着超乎想象的灵活性。而刚好自己也通过TP写过类似社区的程序,只不过感觉太臃肿繁复了……
那为何不已Typecho为框架做个社区呢?
可行性
Typecho功能都是由路由解析伪路径
,把解析结果导向Widget
,通过Widget来完成具体的功能。
其中路由表是可以配置的,并且可以动态地增加
,Widget
则继承自一个超类TypechoWidget
,根据需要编写就可以了。
想要新增功能的话,只需要在原来的路由表上新增一个指定到自定义的Widget
的路由即可实现
验证
具体是否可行,通过插件来进行了简单的验证:
在插件中通过Helper::addRoute(array('name'=>'login','url'=>'/login','widget'=>'Widget_Test','action'=>'render'))
新增了一个路由
- name: 路由名称
- url: 路由地址
- widget: 组件名称
- action: 组件动作
在var/Widget
目录下新建一个Test.php
文件:
class Widget_Test extends Typecho_Widget{
public function render(){
echo 'test';
}
}
启用插件后,通过http://siteUrl/login
地址访问,看到页面输出:test
这样做完全没有问题!!!
新增功能
既然没有问题,那就可以考虑怎么来实现社区的功能了:
- 用户登录:实现用户在前台登录
- 用户注册:实现用户在前台注册
- 帐号激活:激活用户帐号,改变用户权限
- 用户中心:用户信息展示
- 用户主题:发布的主题列表
- 用户回复:发布的回复列表
- 用户收藏:用户收藏的主题/节点
- 用户设置:个人资料设置
- 消息提醒:@/回复以及其他消息提醒
- 用户积分:用户积分/积分日志
- 忘记密码:修改密码
- 发布主题:用户发布/修改主题
- ……
根据功能需要,将会在原有表中新增字段,并增加的几个表:
- creditslog:积分日志表
- favorites:用户收藏表
- messages:消息表
- verifies:验证表
未完待续……