欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

织梦cms网上复制图片不可用的解决方法

程序员文章站 2024-03-04 12:38:35
...

背景描述:

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

操作步骤:

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

织梦cms网上复制图片不可用的解决方法

注: 
复制的源网址需要清空
粘贴源代码(如: <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;
}

备注: 替换你的代码时, 强烈建议先备份.

参考: 丝魅吧