有位客户需求是w88列表list调用文章内容图片多个展示在列表,折腾一番终于搞定
1、在后台核心频道里面对内容模型进行修改,并给加一个字段body,如图:
2、在arclist或者list调用的时候,必须增加字段addfields="body",代码如下:
{dede:arclist addfields="body" channelid='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、w88arclist列表调用内容图片,代码:
{dede:arclist addfields="body" channelid="1"}
[field:body function="getBodypics(@me, 3)" /] //表示调用3张图片
{/dede:arclist}
5、w88文章列表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、在w88list列表显示一张或者多张图片,代码:
{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}
w88二次开发QQ群
本站客服QQ号:,群号(383578617) 如果您有任何w88问题,请把问题发到群里,阁主将为您写解决教程!
转载请注明: w88模板 » w88列表页list获取文章内容图片或者多张图片方法