帝国CMS首页,列表页调用文章的第一张图片
笔记 by ecms 2016-07-04 10:28:46 笔记   帝国CMS   

 需求:
带标题图的直接调用标题图,不带标题图的,调用文章的第一张图片做标题图,如果文章也没有图片,那就调用系统设定的一张图片。

 

 

调用内页图片的话,先提取内容页的字段内容,然后进行正则,得到一个数组,然后判断数组的长度。

把这个函数放到e/class/connect.php里面,最好是放在//替换列表模板/标签模板/搜索模板这一段的上方,因为相关代码都在这一块,修改方便。
然后再在’$titleurl=sys_ReturnBqTitleLink($r);//链接‘这一段的下面加上
’$diyfpic=diy_imgFirst($r);‘ 引入函数;
最后一步:在$listtemp里面加上我们的函数,
$listtemp=str_replace('[!--diyfpic--]',$diyfpic,$listtemp);
这样就可以做列表模板里面进行调用了。
列表模板里面使用的时候,直接 使用 [!--diyfpic--] 即可。

 

PHP Code复制内容到剪贴板
  1. function diy_imgFirst($r){  
  2. global $empire,$dbtbpre;  
  3.         $fr=$empire->fetch1("select newstext from {$dbtbpre}ecms_news_data_1 where id='$r[id]'");  
  4.         $newstext=stripslashes($fr['newstext']);//去除反斜杠并且获取文章正文内容  
  5.         $pattern = "/.*src=\"([^^]*?)\".*/i"//正则  
  6.         preg_match_all($pattern$newstext$match);  
  7.         if(count($match[1])>=1){  
  8.              $diyfpic=$match[1][0];  
  9.         }else{  
  10.              $diyfpic='/e/data/images/notimg.gif';  
  11.         }  
  12. return $diyfpic;  
  13. }  

 


 

 

改进版:

PHP Code复制内容到剪贴板
  1. function diy_getimg($r,$n){  
  2.     global $empire,$dbtbpre,$class_r;  
  3.         $tbname=$class_r[$r[classid]][tbname];  
  4.         $fr=$empire->fetch1("select newstext from {$dbtbpre}ecms_".$tbname."_".$r[fstb]." where id='$r[id]'");  
  5.         $newstext=stripslashes($fr['newstext']);  
  6.         $pattern = "/<img.*?src.*?=.*?[\'|\"]([^\s]+\.*?)[\'|\"].*?>/i";   
  7.         preg_match_all($pattern$newstext$match);  
  8.         if(count($match[1])>=$n){  
  9.              $diypic=$match[1][$n-1];  
  10.         }else{  
  11.              $diypic='/e/data/images/notimg.gif';  
  12.         }  
  13.         return $diypic;  
  14. }  

 

 

完善了下取图片的正则,将此代码复制到/e/class/userfun.php文件中(不影响后续程序升级),然后在调用的地方直接调用该函数。不仅仅可以调用第一张图片

示例:

调用第一张 $pic1=diy_getimg($id,1);

调用第二张 $pic2=diy_getimg($id,2);

 

本文来自于:http://blog.bichuo.com/biji/18.html

下一篇 帝国CMS缓存
Powered by yoyo苏ICP备15045725号