使用“后台»云端»开发»CMS发布插件”可快速生成插件
我们用个示例来演示如何制作插件,首先确定我们的需求:将采集的文章发布到wordpress程序里
输入插件名称:wordpress文章入库,CMS程序选择wordpress,插件功能标识:article(表示文章入库),作者版权填你自己的
然后添加参数,什么是参数呢?参数在界面中是可视化的控件,可绑定或输入数据,方便用户操作
输入变量名供代码中调用该参数的值,必填可过滤空值,参数名称供用户界面操作,参数类型生成相应控件
参数类型:
配置完毕点击“保存”将在根目录/plugin/release/cms中生成相应的插件文件
编辑任务的“发布设置”,发布方式选择“本地cms程序”,如果有wordpress程序会自动检测出(没有可手动绑定),在“CMS插件”中就可以看到刚才添加的插件
大家可以看到,文章标题、文章内容是“选择采集字段(select)”类型,如果采集器中有字段,这里就会自动显示出来
而作者账号、分类是“选择函数返回值(select)”类型,这里没有值是因为函数方法中没有返回数据库中的数据
编辑插件文件,找到“作者账号”函数(你自己设置的函数名),编写代码读取数据库中的账号并返回键值对数组
public function param_option_author(){
$usersDb=$this->db()->table('__USERS__')->limit(100)->select();
$userList=array();
foreach ($usersDb as $user){
$userList[$user['user_login']]=$user['user_login'];
}
return $userList;
}
分类同理
public function param_option_category(){
$catsDb=$this->db()->table('__TERMS__')->select();
$catList=array();
foreach ($catsDb as $cat){
$catList[$cat['term_id']]=$cat['name'];
}
return $catList;
}
代码中无需设置cms的数据库配置,只需$this->db()即可自动调用cms数据库对象,表名也无需加入前缀,使用__表名大写__可自动生成完整表名,数据库操作可参考thinkphp5
注意:并不是支持所有cms程序,只预设了几个流行的程序,如未检测出程序且数据绑定也无效的情况下,数据库配置需要您自行在插件中加入代码:
//CMS全称必须与你插件的cms程序名一致,$cmsPath为cms的根目录路径
public function cms_db_CMS全称($cmsPath){
//请读取cms的配置文件并将数据库保存为以下数组形式后返回,可参考BaseCms.php中的其它cms_db_方法
$cmsDb=array(
'db_type' => 'mysql',//数据库类型
'db_user' => '',//用户
'db_pwd' => '',//密码
'db_host' => '',//数据库主机
'db_port' => 3306,//端口
'db_name' => '',//数据库名称
'db_charset' => 'utf8',//数据库编码
'db_prefix' => '',//表前缀
);
return $cmsDb;
}
以上配置都完成后接下来就是入库工作,找到或添加方法:runImport
/*
* 导入数据
* 必须以数组形式返回:
* id(必填)表示入库返回的自增id或状态
* target(可选)记录入库的数据位置(发布的网址等)
* desc(可选)记录入库的数据位置附加信息
* error(可选)记录入库失败的错误信息
* 入库的信息可在“已采集数据”中查看
* return array('id'=>0,'target'=>'','desc'=>'','error'=>'');
*/
public function runImport($params){
print_r($params);die();
return array('id'=>0,'target'=>'','desc'=>'','error'=>'');
}
$params数组即参数值列表,打印出来可发现,键名就是参数的变量名,值是最终处理后的结果,直接调用$params[变量名]便可得到参数的值
runImport方法必须返回数组,可以做网址排重、数据记录等作用
以上示例已经上传至云平台,您可参考该示例开发出属于您自己的插件
乱码:使用 $this->auto_convert2utf8($str) 自动转换成utf-8编码
检测不出CMS:请手动绑定,输入cms路径并在路径结尾加上@CMS程序名,例如:@discuz