为织梦(dedecms)增加一键清理错误图片附件的功能
dedecms(织梦CMS系统)因为其功能强大,易用性,而且对SEO非常友好,是深受广大站长喜爱的开源CMS系统之一,最后随州seo也在研究dedecms,发有一个问题,如果重复上传的图片,没有一键清理功能,对于我们使用虚拟主机的站长,时间一长,空间就会被这种无用的附件占满空间。之前使用帝国CMS和科汛CMS就有一键清理无用图片附件的功能,但织梦却没有这个功能,dedecms官方论坛也没有相关的解答。有站长说织梦的附体是直接在文章表里面的,而其它CMS系统附件是入库的,所以开发相应的功能比较复杂,但高人终究是存在的。只要修改以下两个文件就可以在后台增加一个一键清理错误图片的功能。
随州seo提示你:修改文件前请做备好备份,包括图片附件,以免引起数据丢失,据此引起的损失,本人免责。
1、找到文件dede\templets\content_batch_up.htm找到下面代码:
<input class="np" type="radio" checked="checked" name="action" value="modddpic" /><br />
更正缩图错误<br />
<input class="np" type="radio" name="action" value="delerrdata" /><br />
清空错误的文档数据
在后面增加代码:
<input class="np" type="radio" name="action" value="delerrpic" /><br />
清空错误的图片
1、找到文件dede\content_batchup_action.php 在最后一个大括号后面增加以下代码。
//清除错误图片
elseif($action == 'delerrpic')
{
$file_a=array();
function rFile($p){
global $file_a;
$handle=opendir($p);
$dir_a=array();
while ($file = readdir($handle)) {
if($file!="." && $file!=".."){
$tmp=$p."/".$file;
if(is_dir($tmp)){
$dir_a[count($dir_a)]=$tmp;
}elseif(is_file($tmp)){
$file_a[count($file_a)]=$tmp;
}
}
}
closedir($handle);
foreach($dir_a as $v){
rFile($v);
}
}
rFile("../uploads/allimg");//调用,要遍历的目录
foreach($file_a as $v){
$temp=substr($v,2);
$query = "select count(*) from dede_addonarticle where body like '%".$temp."%'";
$dsql->setquery($query);
$dsql->execute();
while($row = $dsql->getarray())
{
if($row[0]==0){
if(substr($v, -8, 4)!="_lit" && substr($v, -10, 5)!="index"){
if(file_exists($v))
unlink($v);
}
}
}
}
$dsql->Close();
ShowMsg("成功清除错误图片!","javascript:;");
exit();
}
使用方法:修改了上面两个文件后,后台核心-->批量维护-->文档批量维护里面就增加了一个清空错误图片的功能,点击开始操作,稍等一下即可,等待时间视你的网站数据量。
本文地址:http://www.szcxdl.com/wzjs/104.html
本文作者随州SEO,转载请注明出处。