织梦站群管理系统已实现编辑内容中上传资源同步到分站的功能

织梦站群管理系统已实现编辑内容中上传资源同步到分站的功能

开发框架使用的是ThinkCMF开源系统,文章编辑器也是集成好的,使用的百度UEditor编辑器,那么使用在此织梦站群管理系统中,还需要做一些小的修改。

第一步,修改统一上传接口

第二步,新建控制器,以实现同步织梦站群管理系统《单发》文章编辑资源的同步分站保存的功能

复制thinkcmf的控制器\vendor\thinkcmf\cmf-app\src\user\controller\UeditorController.php到自己的应用下,改名为AdminUeditorController.php,并进行逻辑上的修改。

为防止织梦站群管理系统中可能存在大量无用资源的情况,那么在中转资源到分站后,要删除站群系统中当前上传的资源。

需要注意的:

1、修改UEditor编辑器的配置:在最初没想复制创建新控制器,只是想仿着返回数据的格式来返回数据,之前也没有注意到在加载UEditor时,thinkcmf是需要获取后台配置的,所以一直是出错,编辑器初始化会出错。在thinkcmf中的百度UEditor编辑器初始化是有一个/user/Ueditor/upload?action=config的这个请求的,来获取框架对上传的配置信息的,所以复制修改他们的控制器后(不想直接修改UEditor的插件逻辑,个人感觉也是最好不要修改UEditor的原有逻辑),所有问题基本上就全部解决了。

2、提交发布后在后台处理body字段中的绝对链接为相对链接:同步到分站的资源(主要是图片)后,在织梦站群管理系统中的编辑器中获取返回链接,返回得是相对地址,那么显示在编辑器中,就需要拼接成为绝对链接,即带有分站域名的链接。但是考虑如果分站有换域名的情况发生的话,这些图片资源就不能正常浏览了,所以在站群系统中提交发布时需要对body内容中的图片资源的协议头和域名进行清除处理。另有一点就是分站或者是分站的主机不要开启防盗用资源的功能,如果有,则把织梦站群管理系统的域名加在白名单中,否则站群系统中的文章编辑器将不能显示此前同步的资源,也有可能会造成提交发布后,在分站不能显示出此前同步的资源的可能。

3、向分站发送(图片)资源:我测试在thinkcmf框架下php版本>=5.6可用(PHP v5.5时框架就会出错了),我的实际项目的环境的PHP版本是7.1,同步过来的图片资源,是通过PHP的CURL方法实现的,封装的CURL类的部分源码,以下源码为CURL实现POST发送文件的重要部分:

$mimeType 是资源类型,项目实际传入值为image

$postFile 是接收图片资源的字段名称;

$postData 准备发送出去的全部键值对数据;

$postData[$postFile] 是文件在站群系统项目中的绝对路径;

接收资源时,因为传送是采用二进制流的形式的,所以的值是application/octetstream

4、分站接收资源:使用AdminUpload()改造后的函数。

其实只是在函数内的$sparr的数组中增加了application/octetstream,默认就把传过来的图片资源保存为jpg格式的图片了。