thinkcmf安装在二级目录问题之模板安装
之前很早的时候有了解过thinkcmf,不过当时并没有详细了解其具体流程,这两天想在wordpress博客中增加个二级目录放thinkcmf程序,主要还是对WP不熟悉的原因,暂时也没想去详细了解这个博客程序,所以懒得找各种资料,于是就有了在二级目录中安装thinkcmf的想法!对于thinkcmf这里不做过多介绍,详情请移步thinkcmf官方:https://www.thinkcmf.com/。
我这里所说的二级目录,被我命名为:chongzhi,所有thinkcmf程序都放在chongzhi目录下:
thinkcmf安装在二级目录 blog.21863.cn/chongzhi
本地搭建一切正常,先把index.php从public目录移动到二级目录下,修改部分参数最终效果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// 调试模式开关 define("APP_DEBUG", true); // 定义CMF根目录,可更改此目录 define('CMF_ROOT', __DIR__ . '/'); // 定义应用目录 define('APP_PATH', CMF_ROOT . 'app/'); // 定义CMF核心包目录 define('CMF_PATH', CMF_ROOT . 'simplewind/cmf/'); // 定义插件目录 define('PLUGINS_PATH', __DIR__ . '/public/plugins/'); // 定义扩展目录 define('EXTEND_PATH', CMF_ROOT . 'simplewind/extend/'); define('VENDOR_PATH', CMF_ROOT . 'simplewind/vendor/'); // 定义应用的运行时目录 define('RUNTIME_PATH', CMF_ROOT . 'data/runtime/'); // 定义CMF 版本号 define('THINKCMF_VERSION', '5.0.180626'); // 加载框架基础文件 require CMF_ROOT . 'simplewind/thinkphp/base.php'; // 执行应用 \think\App::run()->send(); |
好了,看看网站 是不是可以正常访问了,什么?样式没有加载出来?好吧,忘记把public/static中的【static】目录移动到二级目录下了,还要修改config.php文件中的CMF设置部分:
1 2 3 4 5 6 7 |
// +---------------------------------------------------------------------- // | CMF 设置 // +---------------------------------------------------------------------- 'cmf_theme_path' => 'public/themes/', 'cmf_default_theme' => 'simpleboot3', 'cmf_admin_theme_path' => 'public/themes/', 'cmf_admin_default_theme' => 'admin_simpleboot3', |
主要就是模板路径;(由于是在二级目录下,不喜欢什么东西都放到chongzhi目录下,所以才这么整;如果把模板目录放到和INDEX.PHP同目录的话,下面的就不用看了)最终效果见上面图片目录结构。
thinkcmf安装在二级目录问题之模板安装
都可以正常访问了,下面该修改模板了,自己复制一份官方模板并且命名为 21863_cn 并且manifest.json文件中的name改为目录名21863_cn,一切就绪;后台安装模板,居然什么都没有.....好吧,这种情况只能查看源码文件app/admin/controller/ThemeController.php,62行:
1 |
public function install() |
中的themes 改为:
1 |
config('cmf_theme_path') |
最终效果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public function install() { $themesDirs = cmf_scan_dir(config('cmf_theme_path')."*", GLOB_ONLYDIR); dump($themesDirs); $themeModel = new ThemeModel(); $themesInstalled = $themeModel->column('theme'); $themesDirs = array_diff($themesDirs, $themesInstalled); $themes = []; foreach ($themesDirs as $dir) { $manifest = config('cmf_theme_path').$dir."/manifest.json"; if (file_exists_case($manifest)) { $manifest = file_get_contents($manifest); $theme = json_decode($manifest, true); $theme['theme'] = $dir; array_push($themes, $theme); } } $this->assign('themes', $themes); return $this->fetch(); } |
最终OK,至于是否存在其它问题,暂不确定;
这里作者既然在配置文件中设置了模板路径,不知道为什么在安装模板的时候还要去根目录读取呢?后台、前台模板都正常,说明作者用的是配置中的路径,可是为什么在安装的时候却又将路径写死了?是故意为之还是有其它意思呢?