新做一个以图片为主的网站,采用的DEDECMS图集,列表页要求直接调内容面的大图,解决方法如下:(主要是采用php的正则匹配函数preg_match_all函数来巩固复习下该函数:preg_match_all(“正则表达式”,匹配的内容,保存在数组中);保存在数组中的数据是 按照这样的格式进行保存的数组[0] 是 符合条件的 一条 语句;数组[1][2][3]…等等内容分别是正则表达式 第1、2、3个匹配符 所匹配的 数据preg_match_all 匹配出来的 该数组是三维数组也就是说数组[1]仍旧是一个数组)
1、在include/common.func.php 中添加以下函数代码
代码如下:
// 在图集列表中调出图集的所有图片
function Getimgs($aid, $imgwith = 220, $imgheight = 80, $num = 0, $style = ”){
global $dsql;
$imgurls = ”;
$row = $dsql -> getone(“Select * From`dede_addonimages` where aid=’$aid'”); //
$imgurls = $row[‘imgurls’];
preg_match_all(“/{dede:img (.*)}(.*){\/dede:img/isU”, $imgurls, $wordcount);
$count = count($wordcount[2]);
if ($num > $count || $num == 0){
$num = $count;
}
for($i = 0;$i < $num;$i++){
if($style == ‘li’){
$imglist .= “<li><a href=#” . $i . “><imgsrc=”. trim($wordcount[2][$i]) . ” width=” . $imgwith . ” height=” . $imgheight . “></a></li>”;
}else{
$imglist .= “<li><img class=’lazy’ src=’../images/grey.gif’ data-original=”. trim($wordcount[2][$i]).” width=” . $imgwith . ” height=” . $imgheight . “></li>”;
//此处用到了jquery的loadlazy延时加载插件。
}
}
return $imglist;
}
模板中 [field:id function=”Getimgs(@me,220,80,90)” /]
说明: 第一个参数 当前ID 第二个第三个, 图片尺寸。 第四个图片张数。
也可以这样用
代码如下:
{dede:arclist row=’3′} // row=3 调用三个图集
[field:id function=”Getimgs(@me,136,62,4)” /] //每个图集调用前4张
{/dede:arclist}
2、也可以这样用, 在列表页{dede:list}之间调用[field:id function=”Getimgs(@me,80,80,9)” /],例如:
{dede:list pagesize=’12’}
[field:id function=”Getimgs(@me,80,80,9)” /]
{/dede:list}
如在其它地方调用,可用:{dede:field.id function=”Getimgs(@me,400,400,10)” /}
列表页调用图集内容多张图片的方法就是以上方法,赶快试试吧!