CoreThink是一套轻量级WEB产品开发框架,CoreThink可轻松实现移动互联网时代支持多终端的轻量级WEB产品快速开发。系统功能采用模块化开发,内置系统设置、分类管理、底部导航、数据备份、开发者工具(菜单管理、配置管理、数据字典、开发文档、视频教程)、用户管理、部门管理、权限控制、内容模型、模板标签、模版主题、邮件管理、云存储、支付中心、插件扩展等模块,便于用户灵活扩展和二次开发。
框架简介
简单、轻量、高效
CoreThink是一套轻量级WEB产品开发框架,追求简单、高效、卓越。可轻松实现移动互联网时代支持多终端的轻量级WEB产品快速开发。
开源免费
遵循Apache2开源协议
代码遵循Apache2开源协议,并且免费使用,对商业用户友好。CoreThink将成为一面国产开源旗舰产品。
极易使用
容易上手
CoreThink 极易使用:没有复杂的代码和新生语法,原生TP语言直接调用即可。后台Builder可快速扩展功能无需编写模版。
无限可能
想到做到
CoreThink 可以用来开发企业网站、门户网站、多用户博客、O2O商城、微信公众号第三方平台,你想到的它都能办到。
通俗文档
通俗易懂
CoreThink 通俗文档:文档通俗易懂,尽量规避专业术语,努力用最白话的形式表述。
ThinkPHP构建
大道至简
依托新版ThinkPHP的功能优势和命名空间的特性,官方七年磨一剑,用心打造。更高,更快,更强!
快速迭代
敏捷开发
CoreThink 快速迭代:第一时间提交新功能的代码。当然也欢迎大家一起贡献代码。
CoreThink框架支持两种安装模式,第一种标准模式安装属于业内比较通用的安装方式,一路点击下一步即可。第二种开发模式安装适合在Paas平台部署以及开发者在本地调试开发时采用。用户可以结合自己的实际情况进行选择。
1.标准模式安装
1)下载CoreThink源代码,解压缩至本地WEB服务器根目录或者上传至虚拟主机/VPS的WEB服务器网站跟目录;
2)浏览器访问主机IP或者域名进入安装界面,同意进入下一步系统环境检测;
3)环境检测如果全部通过则点击下一步进入参数设置,否则请先处理红色✖️的项目;
4)填写数据库信息、管理员信息,点击下一步开始安装系统,成功后将会提示。
2.开发模式安装
1)请先了解Apache或者Nginx的环境变量配置;
2)下载CoreThink源代码,解压缩至WEB服务器根目录;
3)自行将/Application/Install/Data/install.sql数据库文件导入到即将使用的MySQL数据库中;
4)参数配置
如果是本地开发配置Apache参考如下
DocumentRoot "/var/www" ServerName www.corethink.cn ErrorLog "/var/log/apache3/corethink_error_log" CustomLog "/var/log/apache3/corethink_access_log" commonOptions Indexes FollowSymLinks MultiViews AllowOverride All Order deny,allow Allow from all SetEnv CT_DEV_MODE true #开发模式开关开启 SetEnv CT_DB_HOST 127.0.0.1 #数据库IP地址 SetEnv CT_DB_NAME corethink #数据库名称 SetEnv CT_DB_USER root #数据库用户名 SetEnv CT_DB_PWD corethink #数据库用户密码
如果是Paas平台则配置类似下面这样:
5)打开首页访问即可完成。
此部署方式适合于在PaaS平台部署或者本地开发部署,能在进行项目版本控制时保证配置文件不用改变。
在一个产品使用中,必不可少的是各种各样的配置,比如网站的标题、网站的SEO关键字、网站的LOGO等。ThinkPHP框架本身提供了配置文件的形式来集中管理各类配置的需求,在一般情况下(运营者了解ThinkPHP)基本满足需求。然而考虑到现代的产品运营一般属于专业运营,很可能完全不懂技术,这时候对系统就提出了比较高的要求,一个现代的系统应当提供图形化界面以供使用者设置某些参数。
做系统设置有两种方案,一种在后台提供设置界面,用户修改配置后写回ThinkPHP配置文件,第二种也是当前本系统采用的方案,即:在数据库建立一种系统配置表,用户经常需要修改的配置存储到数据表里,当系统接收到访问请求时,首先从数据库读取所有的配置再与配置文件的配置进行合并,接下来再执行正常的事务流程。实际流程如下图:
相关实现方案如下:
1)修改配置
管理员在后台修改网站标题、网站描述、版权信息等配置后提交到系统。系统接收数据后保存到数据库。
/** * 获取某个分组的配置参数 * @author jry <598821125@qq.com> */ public function group($tab = 1){ //根据分组获取配置 $map['status'] = array('egt', '0'); //禁用和正常状态 $map['group'] = array('eq', $tab); $data_list = D('SystemConfig')->where($map)->order('id asc')->select(); //构造表单名、解析options foreach($data_list as &$data){ $data['name'] = 'config['.$data['name'].']'; $data['options'] = parse_attr($data['options']); } //使用FormBuilder快速建立表单页面。 $builder = new CommonBuilderFormBuilder(); $builder->title('系统设置') //设置页面标题 ->SetTablist(C('CONFIG_GROUP_LIST')) //设置Tab按钮列表 ->SetCurrentTab($tab) //设置当前Tab ->setUrl(U('groupSave')) //设置表单提交地址 ->setExtraItems($data_list) //直接设置表单数据 ->display(); } /** * 批量保存配置 * @author jry <598821125@qq.com> */ public function groupSave($config){ if($config && is_array($config)){ $config_object = D('SystemConfig'); foreach ($config as $name => $value){ $map = array('name' => $name); $config_object->where($map)->setField('value', $value); } } S('DB_CONFIG_DATA',null); $this->success('保存成功!'); }
2)系统获取数据库配置并于本地配置文件合并
这一步实际上是在AdminController中实现的,是继登录检测、权限检测之后的第三步。
//读取数据库中的配置 $config = S('DB_CONFIG_DATA'); if(!$config){ $config = D('SystemConfig')->lists(); $config['DEFAULT_THEME'] = ''; //后台无模板主题 S('DB_CONFIG_DATA',$config); } C($config); //添加配置