织梦列表页list获取文章内容图片或者多张图片方法
有位客户需求是织梦列表list调用文章内容图片多个展示在列表,折腾一番终于搞定
1、在后台核心频道里面对内容模型进行修改,并给加一个字段body,如图:
arclistarclist或者list调用的时候,必须增加字段addfields=”body”,代码如下:
{dede:arclist addfields=”body” channelchannelid=’1′ }
{/dede:arclist}
{dede:list addfields=”body”}
{/dede:list}
3、实际应用中必须配置调用文章内容自定义正则函数,这段代码要放在/include/extend.func.php里面,这里写上:
/** * 文章内容提取图片(多张)自定义输出 * * @access public * @param string $string 文档内容 * @param string $num 输出几张 * @return string */if(!function_exists('getBodypics')) { function getBodypics($string, $num) { preg_match_all("/<img([^>]*)\s*src=('|\")([^'\"]+)('|\")/",$string,$matches); $imgsrc_arr = array_unique($matches[3]); $count = count($imgsrc_arr); $i = 0; foreach($imgsrc_arr as $imgsrc) { if($i == $num) break; $result .= "<li><img src=\"$imgsrc\"/></li>"; $i++; } return $result; } }
4、织梦arclist列表调用内容图片,代码:
{dede:arclist addfields=”body” channelid=”1″}
[field:body function=”getBodypics(@me, 3)” /] //表示调用3张图片
{/dede:arclist}
5、织梦文章列表list调用多张内容图片,首先要获取内容图片数量,然后根据数量决定显示图片以及调用的样式,这段代码要放在/include/extend.func.php里面,代码:
/** * 获取图集图片数量 * @access public * @param string $aid 文章id * @return string */function BodyImgNum($aid) { global $dsql; $sql = "select aid,body from dede_addonarticle where aid='$aid' "; $arcRow = $dsql->GetOne($sql); $body = $arcRow['body']; $img_array = array(); $patte="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/i"; preg_match_all($patte,$body,$img_array); $img_array = array_unique($img_array[1]); $num = count($img_array); return $num; }
6、在织梦list列表显示一张或者多张图片,代码:
{dede:list addfields="body"} [field:array runphp="yes"] $num = BodyImgNum(@me['id']); $litpic = @me['litpic']; $title = cn_substr(@me['title'],80); $click = @me['click']; $date = MyDate('Y-m-d',@me['pubdate']); $pics = getBodypics(@me['body'],2); $pics2 = getBodypics2(@me['body'],3); $arcurl = getMobileArcUrl(@me['arcurl']); @me = $num; if($num == 2){ @me = "<div class='con2 mat15'> <div class='conn'> <div class='title2'><a href='{$arcurl}' title='{$title}'>$title</a></div> <div class='mat10'> <a href='{$arcurl}'>$pics</a> </div> <div class='clearfix'></div> <div class='bottom2'><i class='fa fa-clock-o' aria-hidden='true'></i> $date <i class='fa fa-thumbs-o-up' aria-hidden='true' style='margin-left:7%;'></i> $click </div> </div> </div>"; } elseif($num == 3){ @me = "<div class='con2 mat15'> <div class='conn'> <div class='title2'><a href='{$arcurl}' title='{$title}'>$title</a></div> <div class='mat10'> <a href='{$arcurl}'>$pics2</a> </div> <div class='clearfix'></div> <div class='bottom2'><i class='fa fa-clock-o' aria-hidden='true'></i> $date <i class='fa fa-thumbs-o-up' aria-hidden='true' style='margin-left:7%;'></i> $click</div> </div> </div>"; }else{ @me = "<div class='con mat15'> <div class='left'><a href='{$arcurl}'><img src='{$litpic}' alt='{$title}'></a></div> <div class='right'> <div class='title'><a href='{$arcurl}' title='{$title}'>$title</a></div> <div class='mat10 bottom'><i class='fa fa-clock-o' aria-hidden='true'></i> $date <i class='fa fa-thumbs-o-up' aria-hidden='true' style='margin-left:7%;'></i> $click</div> </div> </div>"; } [/field:array] {/dede:list}