dedecms调用文章第一张图片原图为缩略图(非自动生成的缩略图)的方法
  • Blog
  • 2015-05-30
  • (4,498) Views
  • (0) Comments

最近在制作一个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[]数组的下面加入即可。 这样亦可以用原来的标签字段调用图片。文章有第一张图片即显示第一个图片,如无则调用文章缩略图


Comments

Top