织梦列表页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}