织梦DedeCms批量提取第一张图片为缩略图

因为火车头采集了一些图文文章,但是程序没有自动提取第一张图片作为缩略图,但是已经采集到数据库了,就需要批量提取一下这些文章的缩略图。

织梦后台有个批量维护功能>>自动摘要|分页功能,为了比较好管理,黑猫警长就把这个批量提取第一张图片为缩略图的功能放在这里,看上去比较和谐,另外也可以自己填写开始和结束的id实现批量的功能。强调一下,修改之前请先做好对应文件的备份!首先打开dede目录下-article_description_main.php文件,在

}//获取自动摘要代码结束

后加入如下批量提取缩略图的函数代码

//获取首图为缩略图
    if($dojob=='spic')
    {
require_once(DEDEADMIN."/inc/inc_archives_functions.php");
if(empty($totalnum))
{
    $addquery  = "";
    $addquery2  = "";
    if($sid!=0)
    {
$addquery  = " and id>=$sid ";
    }
    if($eid!=0)
    {
$addquery2  = " and id<=$eid ";
    }
    $tjQuery = "Select count(*) as dd From dede_archives where channel='{$channel}' $addquery $addquery2";
    $row = $dsql->GetOne($tjQuery);
    $totalnum = $row['dd'];
}
if($totalnum > 0)
{
    $addquery  = "";
    $addquery2  = "";
    if($sid!=0)
    {
$addquery  = " and dede_archives.id>=$sid ";
    }
    if($eid!=0)
    {
$addquery2  = " and dede_archives.id<=$eid ";
    }
    $fquery = "Select dede_archives.id,dede_archives.litpic,{$table}.{$field} From dede_archives left join {$table} on {$table}.aid=dede_archives.id where dede_archives.channel='{$channel}' $addquery $addquery2 limit $startdd,$pagesize; ";
    $dsql->SetQuery($fquery);
    $dsql->Execute();
    while($row=$dsql->GetArray())
    {
//$tid=$row['id'];
$body = $row[$field];
$litpic = GetDDImgFromBody($body);
$dsql->ExecuteNoneQuery("Update dede_archives set litpic='$litpic' where id='{$row['id']}';");
    }
    //返回进度信息
    $startdd = $startdd + $pagesize;
    if($totalnum > $startdd)
    {
$tjlen = ceil( ($startdd/$totalnum) * 100 );
    }else
    {
$tjlen=100;
echo "完成所有任务!";
exit();
    }
    $dvlen = $tjlen * 2;
    $tjsta = "<div style='width:200;height:15;border:1px solid #898989;text-align:left'><div style='width:$dvlen;height:15;background-color:#829D83'></div></div>";
    $tjsta .= "<br/>$tid...完成处理文档总数的:$tjlen %,继续执行任务...";
    $nurl = "article_description_main.php?totalnum=$totalnum&startdd={$startdd}&sid=$sid&eid=$eid&pagesize=$pagesize&table={$table}&field={$field}&dsize={$dsize}&msize={$msize}&channel={$channel}&dojob={$dojob}";
    ShowMsg($tjsta,$nurl,0,500);
    exit();
}else
{
    echo "没有满足条件的操作记录!";
    exit();
}
    }//首图缩略图结束

以上就是程序函数部分,然后就需要修改后台管理的模板文件,以便提交数据处理。具体是dede-templets目录下的article_description_main.htm文件,找到如下代码:

<input type="radio" name="dojob" class="np" value="page">              自动分页

在这个代码的后面加入:

<input type="radio" name="dojob" class="np" value="spic">                自动缩略图

20160430115702768

以上代码就结束了完成了一个大阶段,我们再去后台“核心”-“批量维护”-“自动摘要|分页”点击“自动缩略图”再点击“开始执行分析”即可。

完成以后,数据库执行以下代码,后台文章列表就会显示“图片”:

update `dede_archives` set flag='p' WHERE litpic <> ''

但是注意到了吗?这样截取到的缩略图严重变形了一点也不美观,那怎么办呢?再看以下的文章“dedecms5.7最新版缩略图不变形终极解决办法”,这样把本篇文章与解决变形的文章合起来就形成了织梦批量提取缩略图并不会变形的方法了。注:仅针对文章模型!仅针对文章模型!

未经允许不得转载:郑州seo|不知则问,不能则学!-郑州seo笔记 » 织梦DedeCms批量提取第一张图片为缩略图

赞 (0)
'); })();