开发cms发布插件 -pg电子试玩免费

cms发布插件开发

使用“后台»云端»开发»cms发布插件”可快速生成插件

我们用个示例来演示如何制作插件,首先确定我们的需求:将采集的文章发布到wordpress程序里

输入插件名称:wordpress文章入库,cms程序选择wordpress,插件功能标识:article(表示文章入库),作者pg电子试玩免费的版权填你自己的

然后添加参数,什么是参数呢?参数在界面中是可视化的控件,可绑定或输入数据,方便用户操作

输入变量名供代码中调用该参数的值,必填可过滤空值,参数名称供用户界面操作,参数类型生成相应控件

参数类型:

  • 数字(number)、字符(text)、开关(radio)、文本(textarea) 会转换成界面相应的html元素
  • “选择采集字段(select)”会将采集器中的字段生成select选项元素
  • “选择固定值(select)”并输入选项值会将预设的值生成select选项元素
  • “选择函数返回值(select)”并输入函数名会将函数返回的数组生成select选项元素

配置完毕点击“保存”将在根目录/plugin/release/cms中生成相应的插件文件

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数据库对象,表名也无需加入前缀,使用__表名大写__可自动生成完整表名,数据库操作可参考

注意:并不是支持所有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;
}

发布数据到cms程序

以上配置都完成后接下来就是入库工作,找到或添加方法: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

网站地图