首页 > CMS应用 > 正文
dedecms调用文章第一张图片原图为缩略图(非自动生成的缩略图)的方法

最近在制作一个dedecms的模版,因为不是所有页面用到的缩略图大小都一样,所以我使用的额外的缩略图处理程序,这个时候则需要提取文章里面的第一张图片原图为缩略图,好通过程序来改变原图为缩略图,然后问题就来了!

方法1:

找到include/ common.func.php文件,添加如下代码:

function firstimg($str_pic)
{
$str_sub=str_replace("-lp","","$str_pic");  //把缩略图中的‘"-lp"’  删掉就是第一张图的地址了。
return $str_sub;
}

模版图片调用请修改为:

[field:litpic function=firstimg('@me')/]
或
{dede:field name='litpic' function="firstimg(@me)"/}

此方法工作原理是去掉系统默认缩略图里面的-lp字段,就是文章的第一张图片原图了,添加文章的时候需要勾选缩略图 使用第一张图片,否则就是默认没有缩略图!
修改完毕,就可以关闭dedecms系统自带的缩略图生成了,在核心里面把缩略图宽和高删除即可,然后模版代码就可以正常运行了!

方法2:
修改include/extend.func.php文件,最下面插入函数,查询的是文章附加表,如需查询图片集、软件等模块的,改表名和字段名即可

function GetFirstImg($arcid){  
global $dsql;  
$query= "SELECT body FROM `dede_addonarticle` where aid='$arcid'"; $row = $dsql->GetOne($query); $preg = "//i";  
preg_match_all($preg, $row['body'], $match);  
//print_r($match);  
return $match[1][0];  
}

第二部修改 调用标签include/taglib/arclist.lib.php 织梦调用文章内容的时候需用用到litpic字段,需要重新构造此字段,找到 function lib_arclistDone()函数里面的 $row[litpic],增加

//调用文章第一张图片,非缩略图,如果为空,则调用缩略图。 
if(GetFirstImg($row['id'])!="") { 
$row['litpic']=GetFirstImg($row['id']); 
}

注意:写判断了是为了再调用文章无图的时候仍可以选择缩略图显示。 织梦v57 sp1大概在475行,$row[]数组的下面加入即可。 这样亦可以用原来的标签字段调用图片。文章有第一张图片即显示第一个图片,如无则调用文章缩略图

文章评论

共有 11 条评论

  1. 茹雪

    看文章的都发表一下看法

  2. 茹雪

    不错,说得好,大家鼓掌

  3. 111

    按照这两种方法测试不对呢 ?

    1. Past Dust

      方法我是实测可用的,你检查一下细节,看看哪里有什么细节没有做到位,如果还是不行可以参考一下这个方法,有缩略图显示缩略图,没有缩略图显示随机预设的缩略图,地址:https://www.pastdust.com/dedecms-rand-litpic/

  4. 李世奇

    我想问站长:您的方法二
    你说 方法2:
    修改include/extend.func.php文件,最下面插入函数,查询的是文章附加表,如需查询图片集、软件等模块的,改表名和字段名即可
    function GetFirstImg($arcid){
    global $dsql;
    $query= “SELECT body FROM `dede_addonarticle` where aid=’$arcid'”; $row = $dsql->GetOne($query); $preg = “//i”;
    preg_match_all($preg, $row[‘body’], $match);
    //print_r($match);
    return $match[1][0];
    }
    ——————————–
    我用的是图片集 那么就应该用 dede_addonimages 了吧? 我网站首页某个栏目 调用出来的图片都是图片集的原图这样太大了,我想让首页的图片变小,压缩小,比如原图宽1000,我想首页凋出来的变小宽度最好可以自定义压缩,或者使用缩略图大小;
    这个方法二能实现吗?方法二怎么没有写 在模板调用标签?

    1. Past Dust

      方法二默认的缩略图调用函数就可以用了,已经说得很明白了哟!如果你已经能够获取第一张图片原图了,推荐你一个小工具,控制缩略图会更方便 https://www.pastdust.com/timthumb/ ,网上有更多关于TimThumb的配置以及安全设置的教程,你可以找找看,这个小工具可以即实现你的缩略图需求,还不另外生成图片占用空间,都是临时文件。

  5. mei

    站长,这个方法能与地址:https://www.pastdust.com/dedecms-rand-litpic/ 这个同时用吗,就是如果有图片调取第一张,没有的话调取预设的图片。

    1. Past Dust

      不能同时使用

  6. 心逝

    我尝试把附加上传改为以原文件名上传,遇到一个问题,如果添加文档时,正文上传图片为中文文件名,自动提取的缩略图在文件里找到后是乱码的状态,怎么能让自动提取时保存为中文的呢,应该是提取的时候保存到服务器时字符编码问题,请教楼主,QQ2896726646

    1. Past Dust

      你这个问题无解,不用中文文件名的图片就好了

  7. 晓闯

    确实有用

Top