DedeCMS织梦arclist调用多图显示修改教程
经常逛新闻信息类移动站或APP会发现,首页或列表采用AJAX无限加载的方法,看到你不想看为止,每条新闻有一张或三张配图,从用户的角度,看图比看文字更有吸引力些,采用DedeCMS做新闻信息类也是非常受欢迎,但默认只能加载一张缩略图,看看实现三张配图的做法。
调用图集模型前三张图片做法
打开/include/taglib/arclist.php,找到
$row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl']; $row['memberurl'] = $GLOBALS['cfg_memberurl']; $row['templeturl'] = $GLOBALS['cfg_templeturl'];
后面添加,根据自己的实际数据库前缀修改橙色字段
$arrs = $dsql->GetOne("SELECT imgurls FROM `dede_addonimages` WHERE aid={$row['id']} ");
if(is_array($arrs)){
$m="/ddimg=\'(.*)\'/U";
if(preg_match_all($m,$arrs['imgurls'],$pregArr)){
$row['one']=preg_replace($m,'\\1',$pregArr[0][0]);
$row['two']=preg_replace($m,'\\1',$pregArr[0][1]);
$row['three']=preg_replace($m,'\\1',$pregArr[0][2]);
}
}
前台调用多张缩略图
{dede:arclist} <img src="[field:one/]" width="200" height="100"/> //第1张图片的地址 <img src="[field:two/]" width="200" height="100"/> //第2张图片的地址 <img src="[field:three/]" width="200" height="100"/> //第3张图片的地址 {/dede:arclist}
调用文章模型前三张图片做法
文章模型能自动获取文章的第一张图为缩略图,也有些资源修改方法,这里介绍用频道内容模型管理增加自定义字段掉用多张图的方法,参考DedeCMS如何添加自定义字段与前台调用。
如果后面需要增加说明性的文字,就需要在该字段的自定义表单HTML填写具体的HTML源代码,
自定义表单HTML用~name~表示提示文字,~form~表示表单元素
前台用{dede:field.pic1/}调用,不是出现图片地址,而是出现
{dede:img text='' width='270' height='129'}http://www.zuola.net/uploads/101017/1-10101H21F54P.gif{/dede:img}
这是DedeCMS处理方式的问题,参考文章DedeCMS内容页列表页调用自定义图片地址,创建 GetOneImgUrl函数,处理完了之后。
内容页调用多张缩略图
{dede:field.pic1 function='GetOneImgUrl(@me,0)'/}<!--调用完整HTML代码--> <img src="{dede:field.pic2 function='GetOneImgUrl(@me,1)'/}/><!--只调用图片地址-->
列表页调用多张缩略图
在该栏目列表下直接使用{dede:list}标签,在其他列表或首页用{dede:arclist}标签,需要配合addfields和channelid使用,如下:
{dede:arclist addfields='pic1,pic2' channelid='1'}
[field:pic1 function='GetOneImgUrl(@me,0)'/] <!--调用完整HTML代码-->
[field:pic2 function='GetOneImgUrl(@me,1)'/] <!--只调用图片地址-->
{/dede:arclist}
调用文章、图集模型第1,2,3张图片另一实现方法
打开include/extend.func.php,在最下面添加代码:橙色部分是该栏目所在的数据表,根据实际情况修改
//取第一张地址 function GetFirstImg($arcid){ global $dsql; $query= "SELECT anlsm FROM `dede_addon7` where aid='$arcid'"; $row = $dsql->GetOne($query); $preg = "/<img.*?src=[\'\"](.+?)[\'\"].*?>/i"; preg_match_all($preg, $row['anlsm'], $match); //print_r($match); return $match[1][0]; } //取第二张地址 function GetSecImg($arcid){ global $dsql; $query= "SELECT anlsm FROM `dede_addon7` where aid='$arcid'"; $row = $dsql->GetOne($query); $preg = "/<img.*?src=[\'\"](.+?)[\'\"].*?>/i"; preg_match_all($preg, $row['anlsm'], $match); //print_r($match); return $match[1][1]; } //取第三张地址 function GetThirImg($arcid){ global $dsql; $query= "SELECT anlsm FROM `dede_addon7` where aid='$arcid'"; $row = $dsql->GetOne($query); $preg = "/<img.*?src=[\'\"](.+?)[\'\"].*?>/i"; preg_match_all($preg, $row['anlsm'], $match); //print_r($match); return $match[1][2]; }
打开include/taglib/arclist.lib.php,找到如下代码(大概在第514行):
$row['fulltitle'] = $row['title'];
在下面添加代码:
$row['firstimgurl'] = GetFirstImg($row['id']); $row['secondimgurl'] = GetSecImg($row['id']); $row['thirdimgurl'] = GetThirImg($row['id']);
调用标签为:
<img src="[field:firstimgurl/]" />//第一张图片 <img src="[field:secondimgurl/]"/>//第二张图片 <img src="[field:thirdimgurl/]"/>//第三张图片
如果你自定义的字段中没图片,获取的地址就是空的。