背景描述:

织梦cms采集图片集时, 需要使用织梦cms提供的"网上复制图片"的功能, 好像我这里这个功能一直不可用, 今天下定决心研究了下源代码并进行了适当修改, 将我的修改提供给大家参考

操作步骤:

1. 采用IE浏览器, 发布图集

 
注: 
复制的源网址需要清空
粘贴源代码(如: <img src='http://icon.nipic.com/BannerPic/20170928/home/20170928155702.jpg' />)到上图的第三个框

2. 打开dede/inc/inc_archives_functions.php文件修改下面这个函数

/**
* 获得HTML里的外部资源,针对图集
*
* @access public
* @param string $body 文档内容
* @param string $rfurl 来源地址
* @param string $firstdd 开始标记
* @return string
*/
function GetCurContentAlbum($body, $rfurl, &$firstdd)
{
global $dsql,$cfg_multi_site,$cfg_basehost,$cfg_ddimg_width;
global $cfg_basedir,$pagestyle,$cuserLogin,$cfg_addon_savetype;
require_once(DEDEINC.'/dedecollection.func.php');
if(empty($cfg_ddimg_width)) $cfg_ddimg_width = 320;
$rsimg = '';
$cfg_uploaddir = $GLOBALS['cfg_image_dir'];
$cfg_basedir = $GLOBALS['cfg_basedir'];
$basehost = 'http://'.$_SERVER['HTTP_HOST'];
//$img_array = array();
//echo "<br />body: ".$body;
preg_match_all("/(src)=[\"|'| ]{0,}(http:\/\/([^>]*)\.(gif|jpg|png))/isU",$body,$img_array);
$img_array = array_unique($img_array);
//echo "<br />";
//print_r($img_array);
$imgUrl = $cfg_uploaddir.'/'.MyDate($cfg_addon_savetype, time());
$imgPath = $cfg_basedir.$imgUrl;
if(!is_dir($imgPath.'/'))
{
MkdirAll($imgPath,$GLOBALS['cfg_dir_purview']);
CloseFtp();
}
$milliSecond = 'co'.dd2char( MyDate('ymdHis',time())) ;
foreach($img_array as $key=>$value)
{
for ($i = 0; $i < count($value); $i++)
{
$value1 = $value[$i];
$value1 = trim($value1);
$value1 = str_replace("src='", "", $value1);
$value1 = str_replace("src=", "", $value1);
$value1 = str_replace("src=\"", "", $value1);
//echo "<br />value1: ".$value1;
if(preg_match("#".$basehost."#i", $value1) || !preg_match("#^http:\/\/#i", $value1)
|| ($cfg_basehost != $basehost && preg_match("#".$cfg_basehost."#i", $value1)))
{
//echo "<br />continue;";
continue;
}
$itype = substr($value1, -4, 4);
if( !preg_match("#\.(gif|jpg|png)#", $itype) ) $itype = ".jpg"; $rndFileName = $imgPath.'/'.$milliSecond.'-'.$key.'-'.$i.$itype;
$iurl = $imgUrl.'/'.$milliSecond.'-'.$key.'-'.$i.$itype;
//echo "<br /> iurl:".$iurl; //下载并保存文件
$rs = DownImageKeep($value1, $rfurl, $rndFileName, '', 0, 30);
if($rs)
{
$info = '';
$imginfos = GetImageSize($rndFileName, $info);
$fsize = filesize($rndFileName);
$filename = $milliSecond.'-'.$key.$itype;
//保存图片附件信息
$inquery = "INSERT INTO `#@__uploads`(arcid,title,url,mediatype,width,height,playtime,filesize,uptime,mid)
VALUES ('0','$filename','$iurl','1','{$imginfos[0]}','$imginfos[1]','0','$fsize','".time()."','".$cuserLogin->getUserID()."'); ";
$dsql->ExecuteNoneQuery($inquery);
$fid = $dsql->GetLastID();
AddMyAddon($fid, $iurl);
if($pagestyle > 2)
{
$litpicname = GetImageMapDD($iurl, $cfg_ddimg_width);
}
else
{
$litpicname = $iurl;
}
if(empty($firstdd) && !empty($litpicname))
{
$firstdd = $litpicname;
if(!file_exists($cfg_basedir.$firstdd))
{
$firstdd = $iurl;
}
}
@WaterImg($rndFileName, 'down');
$rsimg .= "{dede:img ddimg='$litpicname' text='' width='".$imginfos[0]."' height='".$imginfos[1]."'} $iurl {/dede:img}\r\n";
}
}
}
return $rsimg;
}
 
备注: 替换你的代码时, 强烈建议先备份.

织梦cms网上复制图片不可用的解决方法的更多相关文章

  1. dedecms织梦系统后台验证码图片不显示的解决方法

    网站迁移后,dedecms织梦系统后台验证码图片不显示的解决方法通用解决方案-取消后台验证码功能因为没有验证码,不能进后台,所以修改php文件源代码:方法一:打开dede/login.php 找到如下 ...

  2. php中(包括织梦cms)set_time_limit(0)不起作用的解决方法

    背景介绍: 在做织梦冗余图片清理的功能时, 由于冗余图片太多,导致每次清理时都会超时, 后来在网上搜索了各种文章,网上有如下的解决方法: set_time_limit(0) ini_set('max_ ...

  3. 织梦CMS增加复制文档功能

    打开后台目录(/dede)下archives_do.php约430行下添加: /*----------------------------- //复制文档 ---------------------- ...

  4. [转载]织梦CMS首页调用分类信息栏目及列表方法

    原文地址:织梦CMS首页调用分类信息栏目及列表方法作者:小武哥 不懂代码,搜索学习一晚上,都是说调用特定栏目分类信息列表的,用这个代码 {dede:arclistsg row='10' titlele ...

  5. Dedecms织梦后台登陆验证码不显示几种解决方法

    Dedecms织梦后台登陆验证码不显示几种解决方法,服务器所造成的验证码不显示问题看这里: 方法一:查看服务器的php版本是否与程序版本兼容(织梦程序PHP版本查看方法:打开www.96net.com ...

  6. (转)织梦cms首页添加digg顶一下的修改方法

    现在把文章内容页拔的顶拔出来.分享一下让各位需要的朋友参考使用(特别注意:红色的是修改的地方)第一步:把顶踩的js和ajax提取出来,放在想要使用的页面用(比如:首页)以下是内容页顶踩用的js.提取出 ...

  7. 织梦CMS首页调用分类信息栏目及列表方法

    不懂代码,搜索学习一晚上,都是说调用特定栏目分类信息列表的,用这个代码 {dede:arclistsg row='10' titlelen='24' orderby='pubdate' channel ...

  8. dede织梦跨频道调用指定栏目文章的解决方法

    很久没有写技术类的文章了,这次这个标题写的- 呃, 有一点儿纠结. 事情是这样的,刚刚回答了一个百度问答上的问题,这个问题的大体意思是,有一个图片栏目,内含3个子栏目,分别为图片栏目1.2和3,另有三 ...

  9. 织梦DEDECMS本地后台操作卡顿的解决方法

    打开/data/common.inc.php,把默认的$cfg_dbhost = ‘localhost‘修改为$cfg_dbhost = ‘127.0.0.1’;保存.然后你会发现后台操作起来流畅多了 ...

随机推荐

  1. Luogu 睡觉困难综合征 ([NOI2014]起床困难综合症)

    一.[NOI2014]起床困难综合症 题目描述 网址:https://daniu.luogu.org/problemnew/show/2114 大意: 有一条链,链上每一个节点包含一个位运算f 与 一 ...

  2. less-more使用方法及区别

    Less按屏(空格,page up/page down)或按行(回车)查看文件 Less按屏(空格)或按行(回车)查看文件(不能向上翻)

  3. 34.Ajax

    优先级 如果发送的是[普通数据] jQuery XMLHttpRequest iframe 如果发送的是[文件] iframe jQuery(FormData) XMLHttpRequest(Form ...

  4. 快速开发基于 HTML5 网络拓扑图应用之 DataBinding 数据绑定篇

    前言 发现大家对于我从 json 文件中直接操作节点属性来控制界面的动态变化感到比较好奇,所以这篇就针对数据绑定以及如何使用这些绑定的数据做一篇说明,我写了一个简单的例子,基于机房工控的服务器上设备的 ...

  5. 仿QQ发语音、图片选择、表情选择demo

    一款仿QQ发语音.图片选择.调用拍照.表情选择的demo git地址:https://github.com/PureLovePeter/pic.git.  喜欢的请 star  star star,共 ...

  6. JavaScript编码规范(2)

    变量 [强制] 变量.函数在使用前必须先定义. // good var name = 'MyName'; // bad name = 'MyName'; [强制] 每个 var 只能声明一个变量. 解 ...

  7. MSIL实用指南-创建方法和定义参数

    本篇讲解实现创建方法.指定参数的名称.实现参数加out和ref修饰符.以及参数加默认值. 创建方法 创建方法用类TypeAttributes的 DefineMethod(string name, Me ...

  8. 记kkpager分页控件的使用

    kkpager支持异步加载分页: 1.页面添加div标签和引用JS,默认标签为<div id="kkpager"></div> 引用JS和样式 <sc ...

  9. Spring shiro 初次使用小结

    首先引入一段关于shiro的介绍: 开发系统中,少不了权限,目前java里的权限框架有SpringSecurity和Shiro(以前叫做jsecurity),对于SpringSecurity:功能太过 ...

  10. WinSock 异步I/O模型-3

    重叠I/O(Overlapped I/O) 在 Winsock 中,重叠 I/O(Overlapped I/O)模型能达到更佳的系统性能,高于之前讲过的三种.重叠模型的基本设计原理便是让应用程序使用一 ...