Giter Club home page Giter Club logo

thinkcmf's Introduction

ThinkCMF 8.0.1 开发版

欢迎入坑,有问题请及时提交issue!

8.0.1正在紧张开发中,请不要用于正式环境!实际项目请下载最新正式版8.0.0

主要特性

  • MIT开源协议,让你飞得更高,行得更远
  • 基于ThinkPHP 8.0
  • 多应用架构
  • 应用中心
  • 支持插件机制
  • 支持多模板
  • 支持模板可视化设计
  • 支持RESTful API
  • 支持Swagger API文档
  • 支持数据库迁移
  • 支持Docker运行

功能列表

  • 基础网站功能(导航、幻灯片、友情链接)
  • 后台多角色权限管理
  • 云存储
  • 微信小程序
  • API
  • API基础功能
  • API用户基础功能
  • 傻瓜式模板
  • 后台模板设计
  • 后台不存在模板文件检测并切换到默认模板
  • 后台加密码
  • 全站静态文件CDN切换
  • 多应用
  • 前台多模板
  • 后台多模板
  • 模板命名空间
  • 多语言
  • 插件功能
  • 插件钩子功能
  • 插件在线安装
  • 应用在线安装
  • 模板在线安装
  • 数据库迁移
  • 插件和应用命令行工具
  • 轻量级命令行工具php think cli
  • 应用发布打包工具
  • 插件发布打包工具
  • 模板发布打包工具
  • 应用支持composer第三方库
  • 插件支持composer第三方库
  • 邮件发送
  • Docker容器
  • API支持Swagger
  • Swagger规范
  • URL美化
  • 应用导航共享
  • 应用后台菜单注解
  • 应用钩子配置
  • 用户操作配置
  • URL规则配置
  • 网站安装功能
  • 会员管理
  • 默认过滤器htmlspecialchars
  • 文件上传
  • 验证码优化
  • 强制所有创建,更新,删除操作携带Token请求
  • 基础控制器validateFailError()方法
  • 支持.env环境配置

即将废弃

  • app模式下后台所有非GET请求提交接口,请后台模板开发者尽快升级到API接口

开发手册

https://www.thinkcmf.com/docs/cmf8

Git仓库

  1. 码云:https://gitee.com/thinkcmf/ThinkCMF 主要仓库
  2. GitHub:https://github.com/thinkcmf/thinkcmf 国际镜像

环境推荐

PHP 8.1
MySQL 5.7+
打开rewrite

最低环境要求

PHP 8.0 (swagger插件要求PHP8.1)
MySQL 5.5
打开rewrite

安装程序

  1. public目录做为网站根目录,入口文件在 public/index.php
  2. 配置好网站,请访问http://你的域名

enjoy your cmf~!

Swagger

开启Swagger

后台应用中心->插件管理安装 Swagger插件(要求PHP8.1及以上)

相关文档

OpenAPI (https://www.openapis.org)
Swagger-PHP (https://zircote.github.io/swagger-php/)

Docker

如果需要Docker下运行ThinkCMF,可以使用下面的仓库
https://gitee.com/thinkcmf/docker

升级指导

6.0.9升级到8.0.0

  1. 更改根目录composer.jsonrequire下列包版本
"php": ">=8.0.0",
"thinkcmf/cmf-app": "^8.0.0",
"thinkcmf/cmf-install": "^8.0.0",
"thinkcmf/cmf-api": "^8.0.0",
"thinkcmf/cmf-appstore": "^2.0",
"thinkcmf/cmf-root": "^2.0"
  1. composer update
  2. 后台所有非ajax的POST请求,改为GET请求
  3. 如自定义后台模板未用admin.js,请注意所有POST请求时在header中增加XX-Device-TypeAuthorization
  4. data/config/template.phpcmf_admin_default_theme后台模板改为admin_default

6.0.8升级到6.0.9

  1. composer update

6.0.7升级到6.0.8

  1. composer update

6.0.6升级到6.0.7

  1. composer update

6.0.5升级到6.0.6

  1. composer update

6.0.4升级到6.0.5

  1. 根目录composer.jsonrequire-dev属性值请更新
  2. composer update

6.0.3升级到6.0.4

  1. 安装静态资源包composer require thinkcmf/cmf-root
  2. 根目录composer.jsonminimum-stability,require,config属性值请更新
  3. composer update

6.0.2升级到6.0.3

  1. composer update

6.0.1升级到6.0.2

  1. composer.json文件里的autoload.psr-4.themes\\改为public/themes
  2. 安装应用市场包composer require thinkcmf/cmf-appstore
  3. public/themes,public/static静态文件也有更新
  4. 删除public/themes/admin_simpleboot3/admin目录下的app_store目录
  5. composer update

更新日志

8.0.1 coding~

  • 完善多语言功能
  • 后台模板全面升级为bootstrap5
  • 升级FontAwesome图标到v6.4.2
  • 增加后台设置统一入口
  • 增加cmf_lang_url函数
  • 增加后台模板自由设计
  • 优化API跨域处理
  • 优化插件安装卸载更新提示
  • 优化应用安装卸载更新提示
  • 优化自由模板组件解析
  • 修复插件API基类validate报错
  • 修复API用户ID获取问题

8.0.0

  • 升级到ThinkPHP8.0
  • 增加后台管理本地文件上传
  • 增加admin.jsRESTful API支持
  • 增加插件PluginRestAdminBaseController基类
  • 后台所有POST请求需要传token
  • 后台使用RESTful API
  • 优化模板标签库加载忽略不存在标签库
  • 优化后台模板
  • 更改后台默认模板为admin_default
  • 增加后台风格arcoadmin
  • 增加后台模板支持bootstrap5
  • 完善前台默认模板default

6.0.9

  • 增强前台模板自由控件功能支持拖拽
  • 增加后台API权限管理
  • 增加后台API导入
  • 增加Swagger插件
  • 增加模板块控件css样式功能
  • 增加模板富文本rich_text变量类型
  • 增加应用支持系统钩子
  • 增加安装程序数据库迁移功能
  • 增加插件执行顺序设置
  • 增加cmf_get_file_url,cmf_utf8_bom函数
  • 优化后台开发者面板支持插件扩展
  • 优化后台插件管理
  • 优化后台首页
  • 优化插件设置
  • 优化权限认证

6.0.8

  • 更新TP到6.0.14
  • 增加应用轻量级命令行第三方库支持
  • 增加注册登录和验证码界面第三方验证码支持
  • 增加后台管理员个人邮件功能
  • 增加应用支持导入系统钩子功能
  • 优化上传对话框逻辑
  • 优化钩子管理界面
  • 优化后台管理员添加编辑逻辑增加安全性
  • 优化缓存清理
  • 优化路由识别
  • 优化系统文件加载
  • 修复后台部分URL刷新不加载
  • 修复幻灯片页面管理报错
  • 补全缺失语言包

6.0.7

  • 升级到tp6.0.13
  • 增加安装时检查API配置
  • 增加前台模板自由控件功能
  • 增加widgetsHead,widgetsBlock,widgetsScript标签
  • 增加css标签相同文件不重复引入功能
  • 增加js标签相同文件不重复引入功能
  • 修复后台菜单添加和编辑子菜单父级不选中
  • 修复后台菜单编辑删除报错
  • 修复应用市场模板升级报错
  • 增加php think cli支持/分隔符
  • 修复tree类相关bug

6.0.6

  • 后台模板设计增强,支持多终端
  • 增加命令行卸载应用
  • 增加网页卸载应用
  • 增加命令行卸载插件
  • 增加tree标签
  • 后台菜单和导航菜单管理使用tree标签
  • 优化应用插件模板升级安装逻辑
  • 优化应用打包格式
  • 去除eval的使用
  • 修复API跨域问题
  • 修复邮件验证码获取用户信息错误

6.0.5

  • 增加数据库迁移
  • 增加模板在线安装
  • 增加轻量级命令行工具php think cli
  • 增加应用发布打包工具
  • 增加插件发布打包工具
  • 增加模板发布打包工具
  • 优化命令行程序
  • 修复命令行下常量APP_PATH缺失
  • 独立Docker容器为单独仓库

6.0.4

  • 调整PHP版本最低限制为7.4.0
  • 增加应用在线安装
  • 增加应用管理
  • 增加安装时更多目录可写检查
  • 增加cmf_get_app_class函数
  • 增加cmf_is_cli函数
  • 增加cmf_test_write函数
  • 优化用户资料编辑
  • 优化函数cmf_scan_dir
  • 优化安装时数据库连接处理
  • 修复cmf_curl_get不支持https
  • 修复/home/slides/{id}API注解错误
  • 修复验证码登录API报错
  • 修复回收站删除、还原报错
  • 修复API路由加载
  • 修复插件更新无法删除旧钩子

6.0.3

  • 自定义分页类
  • 优化后台模板设计
  • 优化后台菜单导入
  • 修复验证器使用错误
  • 修复路由禁用报错
  • 修复插件模板异常类引入错误

6.0.2

  • 增加插件市场支持插件在线安装
  • 增加后台不存在模板文件检测并切换到默认模板
  • 移动swagger功能到插件
  • 优化插件后台权限检查
  • 修复url美化报错
  • 规范env命名,方便编辑器跳转
  • 修正themes命名空间
  • 修复角色删除问题
  • 修复管理员删除问题
  • 修复幻灯片删除问题
  • 优化用户注册
  • 优化后台菜单导入

6.0.1

  • 兼容php8.0
  • 升级到tp6.0.7
  • 增加插件后台基类admin_init钩子
  • 优化cmf版本获取
  • 优化cmf_clear_cache()函数
  • 修复插件URL美化报错
  • 修复上传报错
  • 修复demo应用 page/nav数据源演示报错
  • 修复导入后台菜单报错
  • 修复url美化问题
  • 修复头像上传报错

6.0.0

  • 升级到ThinkPHP6.0
  • API增加Swagger支持
  • 增加.env环境配置支持

thinkcmf's People

Contributors

6dao avatar chemcms avatar crazys1973 avatar dusite271301671 avatar gengqiupeng avatar halflifewfr avatar hanleiorg avatar hihelp avatar hiwowoer avatar iyting avatar jayknoxqu avatar jsruner avatar kf2006 avatar lifeha avatar qq690712575 avatar simplewindorg avatar songjiayao avatar sunjary avatar thinkcmf avatar wanglelecc avatar wzxaini9 avatar xiearthur avatar xskjs888 avatar yangguangwuwu avatar yangyongan avatar zhungkewei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

thinkcmf's Issues

列表页缩缩图不显示

在首页调用栏里里的文章,能显示缩略图,但是在栏目页右侧的最新发布列表里显示不了缩略图.

查询出错,一直报告方法不存在。

Call to undefined method app\user\model\UserModel::getPk(),

 * @param array  $alias      别名定义(已经废弃)
 * @param string $joinType   JOIN类型
 * @return BelongsTo
 */
public function belongsTo($model, $foreignKey = '', $localKey = '', $alias = [], $joinType = 'INNER')
{
    // 记录当前关联信息
    $model      = $this->parseModel($model);
    $foreignKey = $foreignKey ?: $this->getForeignKey($model);        
    $localKey   = $localKey ?: (new $model)->getPk();     //该方法一直调用出错。原因未知。
    return new BelongsTo($this, $model, $foreignKey, $localKey, $joinType);
}

为传上传文件提示出错

上传文件的时候提示出错。$finfo = finfo_open(FILEINFO_MIME_TYPE);这个地方出错
我后来研究发现
$arrInfo = ["name" => $fileImage->getFilename(),
"type" => $fileImage->getMime(),
"tmp_name"=>$strSaveFilePath . $strFilePath,
"error" => 0,
"size" => $fileImage->getSize(),
];
在这里调用$fileImage->getMime();出错。不知道到这里调用出于 什么作用

后台模板设计页,有重复模板,前端无法正确获取数据。

public/portal文件夹下,有重名文件,会被读取到后台模板设计中。 删除文件夹下,重名文件后,后台依然会显示重复的模板。 无法删除,而且,会造成,页面无法正确获取,模板设计中的数据。

例如 public/portal下面 有两个
index.html
index.json
index22.html
index22.json

后台模板设计中 会出现:
两个文件名,后台无法删除,及时删除文件夹下的 index22.html index22.json. 依然会影响到前端数据获取。

导航标签的$level值有问题

默认的标签 输出的,菜单是二级的,第二个菜单是有下级菜单 ,其余的都是一级菜单 。输出源码如下

  •             <a href="/" target="">
                    总校首页                </a>
            
    </li>
    <li class="dropdown dropdown-custom dropdown-custom-level-1">
        
                <a href="#" class="dropdown-toggle dropdown-toggle-1" data-toggle="dropdown">
                    院区分校<span class="caret"></span>
                </a>
            
        <ul class="dropdown-menu dropdown-menu-level-1">
                            <li class="menu-item menu-item-level-2">
    
                <a href="/portal/list/index/id/9.html" target="">
                    济南分校                </a>
            
    </li>
    <li class="menu-item menu-item-level-2">
    
                <a href="/portal/list/index/id/10.html" target="">
                    厦门分校                </a>
            
    </li>
    <li class="menu-item menu-item-level-2">
    
                <a href="/portal/list/index/id/11.html" target="">
                    山东分校                </a>
            
    </li>
        </ul>
    </li>
    <li class="menu-item menu-item-level-2">
    
                <a href="/portal/list/index/id/12.html" target="">
                    专家团队                </a>
            
    </li>
    <li class="menu-item menu-item-level-2">
    
                <a href="/portal/list/index/id/17.html" target="">
                    康复中心                </a>
            
    </li>
    <li class="menu-item menu-item-level-2">
    
                <a href="/portal/list/index/id/16.html" target="">
                    康复案例                </a>
            
    </li>
    <li class="menu-item menu-item-level-2">
    
                <a href="/portal/list/index/id/18.html" target="">
                    培训指南                </a>
            
    </li>
    <li class="menu-item menu-item-level-2">
    
                <a href="/portal/page/index/id/32.html" target="">
                    来校路线                </a>
            
    </li>
    
    </ul>
    

插件列表作者显示这块不能编辑超链接

public $info = [
    'name'        => 'TcAdminLogin',
    'title'       => '自定义后台登录页',
    'description' => '自定义后台登录页',
    'status'      => 1,
    'author'      => '唐朝',
    'version'     => '1.0'
];

'author'等于超链接的时候,无法正常显示。
这里可以考虑添加个超链接字段,以免用户找不到作者。

bug 不知道算不算bug 后台菜单导入

后台菜单导入,只能导入新的
老的提示是更新 其实没有更新
例如 导航管理 这个控制器是没有自动导入注释的 添加导入注释 改个名字 界面显示更新过了
F5 刷新之后 还是老菜单名

上传图片Failed to open output stream!

{"code":0,"msg":"Failed to open output stream!","data":"","url":"","wait":3}
{"code":0,"msg":"Failed to open output stream!","data":"","url":"","wait":3}
{"code":0,"msg":"Failed to open output stream!","data":"","url":"","wait":3}

修改了conf文件后 无法访问页面 提示该页面无法正常运作 报500错误

我把网站路径换成了/home/phynero/thinkcmf/public 下层就是index.php

配置文件这么改的
<Directory "/home/phynero/thinkcmf/public">
Options Indexes FollowSymLinks
AllowOverride All
Order Deny,Allow
Allow from all

项目文件夹权限直接全部777

目前情况是 index.php文件无法访问 然后同目录下的一个普通php文件可以访问
求问如何解决 百度查了好久 没有头绪

环境centos6.5 apache2.2.15 php5.3.3

之前没有修改目录的时候 把项目放到目录下 通过localhost/public/index.php是没问题的

邮箱设置bug2

点击会员注册模版提交出现报错 未定义数组索引: template

注册验证码的关闭!!

为了方便用户使用。
在后台应该有一个设置,可以关掉手机注册验证码和邮箱验证码。
谢谢
商场帮

希望添加两处钩子

1、后台文章提交,需要一个钩子()。
SEO相关的插件需要用到。

2、模板输出(\simplewind\cmf\controller\HomeBaseController.php)需要一个钩子。
多主题共用需要这个。

后台顶部导航栏样式bug

打开新的标签页(openapp),那些标签的文字和关闭按钮(x)不在同一行显示了,

是装的最新的520版,前面的版本是正常的。

导航标签<navigationMenu> 在模板中,多次使用,出现问题。

页面有两个导航,底部有一个。

顶部导航,用标签循环列出,正常。

底部导航,再次用标签列出,出现问题。会受第一个导航标签的影响。

顶部导航代码



{$menu.name|default=''}


底部导航代码

{$menu.name|default=''}

判断失效。、 下面的标签。

  • 内的 text() 值 受 上面的标签影响。

  • 标签化!!!

    用户需要有标签。
    文章需要有标签。
    谢谢。很重要。

    .json文件修改时,后台不能更新

    当我把json 文件里面内容全部删掉,重新写了之后,后台设计更新后 删掉的那部分 还是显示,只有模版重新安装后 , 后台才能更新

    调用会员昵称这块

    系统添加一个参数,如:StaticName,当有昵称的时候输出昵称,没有昵称输出账户名。
    或者集成一个函数,方面前端调用。

    后台管理员账户也要可以设置昵称。

    关于首页搜索的建议

    class SearchController extends HomeBaseController
    {
    public function index()
    {
    // $this->assign('site_name','ThinkCMF内容管理框架 ');
    $keyword = $this->request->param('keyword');

        if (empty($keyword)) {
            $this -> error("关键词不能为空!请重新输入!");
        }
    
        $this -> assign("keyword", $keyword);
        return $this->fetch('/search');
    }
    

    }

    建议做成api接口 返回json数据

    更新后台菜单时失败,请修改获取数据的方式

    后台菜单编辑提交保存的时候,editPost()方法,
    Db::name('AdminMenu')->field(true)->update($this->request->param()); 修改为
    Db::name('AdminMenu')->field(true)->update($this->request->post());
    否则会报数据列不存在,因为用param获取参数时,获取的数组会附加 ["/admin/menu/editpost_html"],再Update就直接报错了

    插件demo不能用

    插件demo不能用,不能安装 php5.6 报错500
    Fatal error: Call to undefined function cmf_add_template_file_suffix() in C:\Users\Administrator\Desktop\thinkcmf5\thinkcmf\simplewind\cmf\common.php on line 1116
    未定义的函数

    HomeBase基础类 自动定位模板文件方法 解析路径出现问题。

    经过莫名的操作后, 自动定位模板文件方法
    private function parseTemplate($template)
    返回的模板路径中, 含有 “\” 。导致 模板数据 more 无法读取

    例如: feach(':index') 模板

    解析后正确路径
    themes/simpleboot3/portal/index.html

    出现解析错误后
    themes/simpleboot3/portal\index.html

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.