首页幻灯片需要做的比较大,但是一般默认调用的是缩略图,幻灯片显示就不清楚了。网上找了半天解决方法,有的偷懒的做法,是把缩略图改大一点;有的比较麻烦的是要修改数据库,添加一个字段保存大图的路径。这些网友的方法效果都不太好。
将上述代码修改为:
if($row['litpic'] == '-' || $row['litpic'] == ''){ //如果缩略图为空
if(GetFirstImg($row['id'])!="") {
$row['litpic']=GetFirstImg($row['id']); //调用文章第1张图片
}
else{
$row['litpic'] = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif'; //如果文章没图片,调用系统默认的
}
}
第3步:
在模板里调用幻灯片图片(即文章缩略图)时循环调用标签:
[field:litpic function=FocusUseFirstImg('@me ')/]
或
{dede:field name='litpic' function="FocusUseFirstImg(@me)"/}
其中,@me就是指缩略图litpic。调用缩略图标签是一样的,只是增加了一个function=FocusUseFirstImg('@me '),这样幻灯片图片就都会调用原图了。
这样幻灯片调用缩略图时,如果有缩略图,则调用缩略图(缩略图如果是手工上传的,本身就是清晰的大图,如果是提取第1张图,则会调用缩略图原图),如果没有缩略图,调用文章第1张图,如文章也没图片,则使用系统默认的图片。
OK,perfect!!
×××××××××××××××××××××××××××××××××
引申:如果幻灯片是用index_image.htm这个模板生成的,查看一下读取缩略图的代码:
picarr[[field:global.autoindex/]] = “[field:litpic/]“;
其实缩略图和原图,名称差别不大,只是缩略图多出了_lp,得到缩略图的情况下,再获取原图,就很简单了。找到下面的js代码
for(i=1;i<picarr.length;i++){
if(files=="") files = picarr[i];
else files += "|"+picarr[i];
}
修改为
for(i=1;i<picarr.length;i++){
if(files=="") files = picarr[i].replace("-lp","");
else files += "|"+picarr[i].replace("-lp","");
}
这样就OK了,其他所有的地方,都不需要更改,只需要修改两行js代码,就实现了幻灯片调用大图
×××××××××××××××××××××××××××××××××
找到约475-507行:
if($row['litpic'] == '-' || $row['litpic'] == '')
{
$row['litpic'] = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';
}
第2步:
修改 /include/taglib/arclist.lib.php
织梦调用文章内容的时候需用用到litpic字段,需要重新构造此字段,该字段在function lib_arclistDone()函数里面。
故,为了让幻灯片显示清楚,我们需要让幻灯片一直调用大图,方法参见第1篇文章引申2和第2篇文章。
综合第1篇文章引申2和第2篇文章,现给出
幻灯片调用不模糊的解决方案:
第1步:
打开 /include/extend.func.php
最下面增加两个函数,查询的是文章附加表,如需查询图片集什么的,改表名即可:
-----------------------------------------------------------------
//函数1:获取文章第1张图片
function GetFirstImg($arcid){
global $dsql;
$query= "SELECT body FROM `dede_addonarticle` where aid='$arcid'";
$row = $dsql->GetOne($query);
$preg = "/<img.*?src=[\'\"](.+?)[\'\"].*?>/i";
preg_match_all($preg, $row['body'], $match);
//print_r($match);
return $match[1][0];
}
//函数2:幻灯片调用缩略图时专用:如果缩略图是小图,则将调用小图对应的原图
function FocusUseFirstImg($str_pic) //幻灯片调用专用
{
$str_sub=str_replace( "-lp", "" , "$str_pic" ); // 把缩略图中的 -lp 替换成空(即删掉),就是文章第一张图的地址了。
return $str_sub;
}
-----------------------------------------------------------------
一般首页幻灯片是采用调用文章缩略图的方式,比如有5张幻灯片,则在后台单独建立一个幻灯片的栏目,栏目内添加5篇文章,每篇文章都有缩略图,首页幻灯片的图片就调用自这些文章的缩略图。