zblog
当前位置:首页 > zblog > 正文内容

zblog

zblogphp文章提交的核心接口说明

4年前 (2018-01-10) 热度:2583 ℃

接口名称:Filter_Plugin_PostArticle_Core


接口描述:接管本插件接口,将提交文章数据时,在过滤数据内容及保存数据前运行插件自定义代码,即可通过该接口更改保存的文章内容。


应用场景:过滤文章内容,替换指定数据内容等,如将文章中的远程文件链接自动换为本地URL、添加文章时添加附件信息(如发送邮箱)等。


调用方法:

Add_Filter_Plugin('Filter_Plugin_PostArticle_Core','yt_demo');


调用参数:

参数类型:post

参数:$article

描述:当前提交的文章数据实例


返回参数:


调用示例:

#注册插件
RegisterPlugin("RemoteImage","ActivePlugin_RemoteImage");
 
#激活插件时挂接Filter_Plugin_PostArticle_Core接口
function ActivePlugin_RemoteImage() {
	Add_Filter_Plugin('Filter_Plugin_PostArticle_Core','RemoteImage_Main');
}
 
#以引用方式接管$article实例
function RemoteImage_Main(&$article) {
	global $zbp;
 
	set_time_limit(0);
	ZBlogException::ClearErrorHook();
	$content = $article->Content;
	$pattern = "/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png]))[\'|\"].*?[\/]?>/"; //匹配图片文件的正则
	preg_match_all($pattern,$content,$matchContent);
	$picArray = $matchContent[1]; //存储匹配的图片链接
	if ($picArray){		
		foreach($picArray as $key=>$rurl){			
			if(substr($rurl,0,strlen($zbp->host))!=$zbp->host) {
				$path=$zbp->usersdir.'upload/'.date('Y').'/'.date('m');			
				if(!file_exists($path)) mkdir($path,0755,true);
				$picname=date('YmdHis').'_'.rand(10000,99999).'.'.pathinfo($rurl,PATHINFO_EXTENSION);
				$pic=$path.'/'.$picname;
				$getpic=RemoteImage_Save($rurl,$pic,$picname); //保存远程图片到本地服务器,得到返回的本地图片地址
				$picUrl=str_replace($zbp->path,$zbp->host,$pic); //把图片地址替换成本地
				$article->Content=str_replace($rurl,$picUrl,$article->Content); //替换文章内容中的图片地址
			}
		}
	}
 
}
#保存远程图片到本地服务器,返回保存在本地的图片地址
function RemoteImage_Save($url,$filename="",$name) {
	global $zbp;
 
	if($url=="") return false;
 
	if($filename=="") {
		$ext=strrchr($url,".");
		if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") return false;
		$filename=date("YmdHis").$ext;
	}
 
	ob_start();
	readfile($url);
	$img = ob_get_contents();
	ob_end_clean();
	$size = strlen($img);
 
	$fp2=@fopen($filename, "a");
	fwrite($fp2,$img);
	fclose($fp2);
 
	$upload = new Upload;
	$upload->Name = $name;
	$upload->SourceName = $name;
	$upload->MimeType = "";
	$upload->Size = $size;
	$upload->AuthorID = $zbp->user->ID;
	$upload->Save();
 
	return true; 
 
}


示例说明:

代码来自插件保存远程图片,实现的步骤简单描述如下:

找出文章中的远程图片

将远程图片保存到本地服务器中

替换文章中的图片地址为本地地址

分享给朋友:

相关文章

zblogphp邮箱营销实用工具

zblogphp邮箱营销实用工具

    邮件营销(Email Marketing)是在用户事先许可的前提下,通过电子邮件的方式向目标用户传递有价值信息的一种网络营销手段。Email营销有三个基...

zblogphp当天发表的文章日期标红

zblogphp当天发表的文章日期标红

模拟下代码场景。{foreach $articles as $article} <h4 class="post-date">{...

向字符串型的参数列表加入一个新参数

向字符串型的参数列表加入一个新参数

可以使用zblog PHP的AddNameInString 函数。AddNameInString 函数 向字符串型的参数列表加入一个新参数。ZBP中有很多地方的选项值采用了如a|b|c这样的...

php curl通过代理获取数据

php curl通过代理获取数据

php curl通过代理获取数据$curl=curl_init(); curl_setopt($curl, CURLOPT_URL, "http://www.baidu...

zblogphg提示“Call to undefined function mysql_connect()”

zblogphg提示“Call to undefined function mysql_connect()”

今天给某个站搬家,原站环境是php5.6,这次配的环境是7.1。然后搬家后,提示然后,惯例,先查看数据库账户密码是否正确。经测试,信息无误。然后呢。。发现配置文件好像挺复杂。这个站是从zblogphp...

zblogphp文章页面编辑1号输出接口说明

zblogphp文章页面编辑1号输出接口说明

接口名称:Filter_Plugin_Edit_Response接口描述:文章编辑页面1号输出接口,具体位置位于标签设置下方,摘要设置上方。应用场景:可在文章(页面)编辑页增加自定义参数,如自定义表单...