想法

作为一款轻量级的博客程序,却有着超乎想象的灵活性。而刚好自己也通过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:验证表

未完待续……