首页 » 工作 » 正文

DedeCMS:在列表页获取文档中的第一张图片(文章模型或图片模型)

发布者:站点默认
2012/07/3 浏览数(1,619) 分类:工作 DedeCMS:在列表页获取文档中的第一张图片(文章模型或图片模型)已关闭评论

用法:

{dede:list pagesize='12'}
	<li>
		<a href="[field:id function='getImgsFirstImg(@me)' /]">
			<img src="[field:litpic /]" alt="[field:title /]"/>
		</a>
	</li>
{/dede:list}

操作:

在 /include/extend.func.php 中添加一个函数:

/**
 * 获取图片集中的第一张图片用于JS特效(缩略图太小)
 * upall,/
 * 20:19 2012年7月3日星期二
 */
function getImgsFirstImg($aid){
   global $dsql;
   $aid = (int)$aid;
   $defaultImg = "/images/defaultpic.gif";
   // 取图片模型的图片集字段
   $query = "
      SELECT imgurls FROM site_addonimages
      WHERE aid = $aid
      LIMIT 1
   ";
   $rs = $dsql->GetOne($query);
   $imgurls = $rs['imgurls'];
   if (empty($imgurls)) return $defaultImg;
   // 取图片集第一张图片
   $reg="/ddimg=\'(.*?)([^\']+)/isu";
   $z=preg_match_all($reg,$imgurls,$imgArray);
   $imgUri = $imgArray[2][0]; // 取到的图片
   if (empty($imgUri)) $imgUri = $defaultImg;
   return $imgUri;
}

若需要从文章正文中获取第一张图片,可以使用这个代码:

/**
 * 获取正文中的第一张图片用于JS特效(缩略图太小)
 * upall,/
 * 9:44 2012年7月4日
 */
function getBodyFirstImg($aid){
   global $dsql;
   $aid = (int)$aid;
   $defaultImg = "/images/defaultpic.gif";
   // 取图片模型的图片集字段
   $query = "
      SELECT body FROM site_addonarticle
      WHERE aid = $aid
      LIMIT 1
   ";
   $rs = $dsql->GetOne($query);
   $body = $rs['imgurls'];
   if (empty($body)) return $defaultImg;
   // 取body中的第一张图片
	$reg='/(src\=\")(.*?)(\".*?\>)/';
   $z=preg_match_all($reg,$body,$imgArray);
   $imgUri = $imgArray[2][0]; // 取到的图片
   if (empty($imgUri)) $imgUri = $defaultImg;
   return $imgUri;
}

<完>

点击返回顶部
  1. 留言
  2. 联系方式