今天遇到了一个很头疼的问题,就是对dede二次开发时,图片集想改成仿腾讯图片新闻组的效果,其实效果不难,网上一搜就有好多,可是实际修改的时候却遇到了个问题,就是调用该文章所有图片的标签{dede:field name='imgurls' alt='图片输出区'}不能重复使用,因为这个效果是有缩略图的,需要输出两遍不同样式的图片(比如一遍不带li,一遍带着li),但是系统只认第二次输出的内容,也就是两次输出都是一样的,折腾了一下午,这会儿才弄好,下面就把解决方法搬上来:
具体分三步:
第一步就是复制这个函数到/include/common.func.php里面
//根据文章id得到图片集的两个分类function getAllImg($id){
global $dsql;
$sql_arc = "SELECT imgurls FROM `#@__addonimages` where aid =".$id;
$row = $dsql->GetOne($sql_arc);
$txt = GetOneArchive($id);
$arr = explode('{dede:img ',$row['imgurls']);
unset($arr['0']);
$pic = array();
for($i = 1; $i<=count($arr);$i++){
$str = substr($arr[$i],0,strpos($arr[$i],'}'));
$arr_small = explode('\' ',$str);
for($j=0;$j<count($arr_small);$j++){
$name =substr($arr_small[$j],0,strpos($arr_small[$j],'='));
$val = $arr_small[$j];
$pic[$i][trim($name)] = trim(strstr($val,"'"),"'");
}
$begin = strpos($arr[$i],"}")+1;
$over = strpos($arr[$i],"{")-$begin;
$img = substr($arr[$i],$begin,$over);
$pic[$i]['img']=trim($img);
$pic[$i]['arcurl']=$txt['arcurl'];
}
return $pic;
}
第二部 那就是在/include/common.func.php写一个对应的getArtImg()函数
写这个函数的时候就希望大家注意了,下面这个是我自己用到的,给大家解释一下
//artists图片列表function getArtImg($id){
$pic = getAllImg($id);
$Div = "";
for($i=1;$i<=count($pic);$i++){
$Div .="<div id='listpic".$i."' class='listpic_exhib' οnmοuseοver='show(id)' οnmοuseοut='show(id)'><div class='listpic_exhib_img_up'><div class='listpic_exhib_img'><p><a href='".$pic[$i]['img']."' rel='prettyPhoto[portfolio]' title='".getImgAlt($pic[$i]['text'])."'><img src='".$pic[$i]['ddimg']."' /></a></p></div></div><div id='listpic".$i."_m' class='listpic_exhib_txt' style='display:none'> <ul><li class='let_title'>".getTakeTwo($pic[$i]['text'])."</li><li class='let_px'>".$pic[$i]['size']."</li><li class='let_lei'>".$pic[$i]['type']." </li> </ul></div></div> <!--一个图片结束-->";
}
return $Div;
}
第三部 在列表模板写上标签和函数
{dede:field.id function="getArtImg(@me)"/}
//这个标签的意思就是得到当前栏目的id,并且调用common.func.php里面的getArtImg()函数,并将id的值传给 getArtImg()函数;
注意:$img = getAllImg($aid);//调用我第一步的那个函数,得到图片集的二位数组,
$pic[$i][ddimg] => /jiu/uploads/allimg/100607/1-10060G12Z2-lp.jpg$pic[$i][text] => @撒地方
$pic[$i][type] => @艾、什顿飞撒地方 //这两个是我自己添加的图片说明
$pic[$i][sort] => soil //这两个是我自己添加的图片说明
$pic[$i][width] => 69
$pic[$i][height] => 100
$pic[$i][img] => /jiu/uploads/allimg/100607/1-10060G12Z2.jpg