做内容管理的时候,有时候会碰上需要复制外链图片内容的需求,可是部分外链图片会带有防盗链导致图片无法在自己网页显示,这时候可以将复制过来的图片在编译器中进行上传到自己的服务器,然后将外链地址替换成自己的服务器地址即可
CKEDITOR.instances.jform_articletext.on('change',function(e){//jform_articletext为textarea的id
var a = e.editor.document ;
var b = a.find("img");
var count = b.count();
for(var i=0;i<count;i++){
if(b.getItem(i).$.src.split('/')[2] != 'image-langyue.sixapp.cn'){
upload(i,b,function(i,b,imgurl){
b.getItem(i).$.src=imgurl;
var a = CKEDITOR.instances.jform_articletext.document.$.getElementsByTagName("img")[i]; //content为textarea的id
a.setAttribute('data-cke-saved-src',imgurl);//替换ckEditor的保存内容,必须要
})
}
}
});
function upload(i,b, callback){
var dom = b.getItem(i).$
var src = dom.src;//获取img的src
src = src.substring(0,10)=='data:image' ? dom.getAttribute('data-src') : src
$.ajax({
type: "GET",
url:"上传文件的url",//服务器url
data:{
source: 'joomla',
url: src
},
success:function(data){
//根据返回地址数据自定义
var imgurl= data.result.upfile; //获取回传的图片url
//获取并更改到现有的图片标签src的值
callback(i,b,imgurl)
}
});
}
因公司业务需求,使用joomla配置的后台内容管理,需要在内容编辑中加入此功能,因doomla自带的编辑器功能不能满足我们的需求(复制过来的内容样式丢失),所以我下载了一个joomla的编辑器插件 dropEdtor,下载地址:
https://www.joomunited.com/dropeditor-download
安装后,可以在插件目录下找到dropEdtor 插件目录,找到
根目录/plugins/editors/dropeditor/dropeditor_styles.js
不一定非要在这个文件内修改,我只是为了图个方便,如果您有更好的地方可修改还请留言提醒~
在CKEDITOR.stylesSet.add()代码下面贴上上方的上传内容部分,即可将次功能融合进joomla中
虽然dropEdtior可以几乎完整复复制带过来的内容样式,可是有个缺陷是无法直接粘贴图片资源,和剪切板图片,这个稍有不便,应该还有地方可以做修改,哪天我找到了再更新上来~