织梦列表list获取文章内容图片或者多个图片

上次在给一个朋友解决一个织梦建站问题,他的需求是织梦列表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、织梦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}

这里已经够详细了,如果需求不同可以自己扩展,转载请注明出处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值