帝国CMS首页,列表页调用文章的第一张图片

2022-12-07 0 922

需求:

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

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

把这个函数放到e/class/connect.php里面,最好是放在//替换列表模板/标签模板/搜索模板这一段的上方,因为相关代码都在这一块,修改方便。

然后再在’$titleurl=sys_ReturnBqTitleLink($r);//链接‘这一段的下面加上

’$diyfpic=diy_imgFirst($r);‘ 引入函数;

最后一步:在$listtemp里面加上我们的函数,

$listtemp=str_replace('[!–diyfpic–]',$diyfpic,$listtemp);

这样就可以做列表模板里面进行调用了。

列表模板里面使用的时候,直接 使用 [!–diyfpic–] 即可。

functiondiy_imgFirst($r){global$empire,$dbtbpre;$fr=$empire->fetch1("selectnewstextfrom{$dbtbpre}ecms_news_data_1whereid='$r[id]'");$newstext=stripslashes($fr['newstext']);//去除反斜杠并且获取文章正文内容$pattern="/.*src=\\"([^^]*?)\\".*/i";//正则preg_match_all($pattern,$newstext,$match);if(count($match[1])>=1){$diyfpic=$match[1][0];}else{$diyfpic='/e/data/images/notimg.gif';}return$diyfpic;}改进版:functiondiy_getimg($r,$n){global$empire,$dbtbpre,$class_r;$tbname=$class_r[$r[classid]][tbname];$fr=$empire->fetch1("selectnewstextfrom{$dbtbpre}ecms_".$tbname."_".$r[fstb]."whereid='$r[id]'");$newstext=stripslashes($fr['newstext']);$pattern="/<img.*?src.*?=.*?[\\'|\\"]([^\\s]+\\.*?)[\\'|\\"].*?>/i";preg_match_all($pattern,$newstext,$match);if(count($match[1])>=$n){$diypic=$match[1][$n-1];}else{$diypic='/e/data/images/notimg.gif';}return$diypic;}

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

示例:

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

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 帝国CMS教程 帝国CMS首页,列表页调用文章的第一张图片 https://www.u-9.cn/webyunying/empirecmssyjc/2450.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

  • 0 +

    访问总数

  • 0 +

    会员总数

  • 0 +

    文章总数

  • 0 +

    今日发布

  • 0 +

    本周发布

  • 0 +

    运行天数

注册会员,众多资源免费下载