跳转到内容

自动添加自定义模板字段的方法

新提供某个页面的自定义模板给用户使用的话,需要给系统添加相应的字段。方法有两个,第一个是需要用户自己动手,如下 图所示。按下面的方法添加完之后,还需要进入相应的频道或插件参数设置那里添加上你的模板路径。相对来说这样的操作,对用户体验不是太好。太麻烦了。 img

第二种方法就是开发者麻烦些,用户不需要做任何设置。进入频道或者是插件的程序目录下面找到upgrade目录,如果此目录不存在就新建这样一个目录,比如

\plugins\form\upgrade\ 这是万能表单插件的目录

\application\cms\upgrade\ 这是CMS频道的目录

\application\common\upgrade\ 这是系统的目录

然后在相应的目录下面新建一个PHP文件,文件名首字母大写,比如Abc.php,为避免文件名冲突,建议以自己的个性用户名字母命名。效果如下图所示: img

代码如下,大家可以复制回去,对应的修改5处位置,如上图所示的位置

<?php
namespace plugins\form\upgrade ; //插件的话,就是 plugins\插件目录\upgrade; 频道的话就是 app\频道目录名\upgrade; 系统就换成 app\common\upgrade;
use think\Db;
class Abc{ //文件名,首字母写大写
protected static $sysname = 'form'; //插件或频道目录名 系统就使用index
protected static $template = 'pc_index_signin_index_index'; //自定义模板变量名
protected static $path = 'index_style/default/abc.htm'; //你所制作的模板路径,前台风格就index_style开头,会员中心就 member_style 开头 后台是 admin_style 开头
protected static $title = '登录页PC模板路径'; //自定义模板的页面名称
public static function up(){
if (self::$sysname!='index') {
if (modules_config(self::$sysname)) {
$sysid = modules_config(self::$sysname)['id'];
}else{
$sysid = plugins_config(self::$sysname)['id'];
$sysid = -$sysid;
}
}
$ifsys = $type = 0;
$template = self::$template;
if (self::$sysname!='index') {
$type = Db::name('config_group')->where('sys_id',$sysid)->value('id');
}
if (!$type || self::$sysname=='index') {
$type = 1;
$sysid = 0;
}
$path = self::$path;
$title = self::$title;
if (!Db::name('config')->where('sys_id',$sysid)->where('c_key',$template)->find()) {
into_sql("INSERT INTO `qb_config` (`id`, `type`, `title`, `c_key`, `c_value`, `form_type`, `options`, `ifsys`, `htmlcode`, `c_descrip`, `list`, `sys_id`) VALUES(0, {$type}, '{$title}', '{$template}', '{$path}', 'text', '', $ifsys, '', '一般留空,index_style/开头,比如index_style/abc.htm', 0, '{$sysid}');
");
}else{
Db::name('config')->where('sys_id',$sysid)->where('c_key',$template)->update([
'c_value'=>$path,
]);
}
}
}

这个文件创建好后,你可以本机测试看看有没有报错。 修改 \application\index\controller\Index.php 查找return $this->fetch('../index'); 在他上面一行添加如下代码 \plugins\form\upgrade\Abc::up(); 如下图所示,保存后,刷新几次网站主页,看看页面是否报错,没报错的话,就查看一下后台,是否自动加上了这个字段。 img 特别提醒一下,\plugins\form\upgrade\Abc::up(); 这个代码需要做相应的修改,如下图所示,必须有反斜杠开头,结尾::up();结尾 img

后续多人制作个性模板风格的话,我们会考虑提供一个插件,让他自动生成上面的升级文件。