此刻心情愉快,解决了一个蛋疼的问题,下面开始说问题:
我要做的效果是类似淘宝的那种:上面一张大图,下面4个小图,鼠标划过就切换,客户要求用dedecms做,可对dedecms的开发我没实战经验,只是以前下载下来看过。没办法,公司有困难就是咱的困难,硬着头皮上。经过半天鼓捣,其它页面都做好了,就这个产品展示页的这个效果给难住了,第一想法就是百度查下,可有用的资料几乎没有,没办法,只有从思路上自己寻找突破口,首先找到数据库dede_addonimages,然后就是要知道这个产品的ID,再读取imgurls字段的图片地址(获取图集里每个图片的地址),然后一个一个读取出来。
可能小弟运气好,一会儿就找到了读取imgurls字段的方法,可是dedecms在写入图集的时候用到了自己的模板,所以不得不用PHP正则表达式来提取这些图片,结果......就全部读出来了,废话少说,直接上代码。
先找到include/common.inc.php文件,把下面代码贴进去(我贴的是我网站上的,具体可根据需要修改):
function Getimg($aid,$imgwith,$imgheight)
{
global $dsql;
$imgurls = '';
$row =$dsql->getone( "select imgurls from dede_addonimages where aid='$aid' ");
$imgurls= $row['imgurls'];//获取字段数据
preg_match_all("/\}.+jpg/",$imgurls,$matches);//取出符合条件的
$new_arr=array_unique($matches[0]);//去除数组中重复的值
$pic_num1=" <dt><DIV class=tu_big><img id=imgInit class=zoom name=imgInit src=\"".substr($new_arr[0],2)."\" /></DIV></dt><dd><ul>";
foreach($new_arr as $key){
$pic_list.="<li><img οnmοuseοver='pic_next(\"".substr($key,2)."\")' src=\"".substr($key,2)."\"' width=".$imgwith." height=".$imgheight." /></li>";
}
$pic_end="</ul></dd>";
return $pic_num1.$pic_list.$pic_end;//返回结果
}
再到模板页面把下面代码贴到要显示的位置:
{dede:field.id function="Getimg(@me,100,50)" /}
这样效果就出来了,100跟50就是图片的宽跟高,懂代码的人把方法一看就会明白的哈,不懂的就注意下。