[转帖]帝国CMS首页,列表页调用正文内的多张张图片

发布时间:2019-10-12

仿站网>问答 > [转帖]帝国CMS首页,列表页调用正文内的多张张图片
在网上看到这样一个贴子:可以在首页和列表页调出内容正文的图片。

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

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

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

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

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

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

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

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

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

function diy_imgFirst($r){   
global $empire,$dbtbpre;   
        $fr=$empire->fetch1("select newstext from {$dbtbpre}ecms_news_data_1 where id='$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;   
}  

2、改进版:

function diy_getimg($r,$n){   
    global $empire,$dbtbpre,$class_r;   
        $tbname=$class_r[$r[classid]][tbname];   
        $fr=$empire->fetch1("select newstext from {$dbtbpre}ecms_".$tbname."_".$r[fstb]." where id='$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);

上面的方法1 在7.5版中测试是可以的,但方法2,多张图片的,没看明白是怎么操作,测试出错,那段代码到底该放在哪个文件中,如何使用? 有没有人能帮忙看看?谢谢!
回复列表
1.
放到userfun.php文件里
2.
原帖由 bn899 于 2018-12-27 18:13:03 发表
放到userfun.php文件里


谢谢,如果放到userfun.php,第1段的代码还需要吗?
调用第一张 $pic1=diy_getimg($id,1);
调用第二张 $pic2=diy_getimg($id,2);
这两个代码放到connect.php中调用图片出错
3.
楼上参数不对,函数里的第一个参数是数组
4.
原帖由 痴情种 于 2018-12-28 08:00:29 发表
楼上参数不对,函数里的第一个参数是数组


如果我想调用内容页3张图片,能详细说一下整个使用方法吗?最好亲自试过。
5.
收藏
6.
原帖由 lion0512 于 2018-12-28 12:11:48 发表


如果我想调用内容页3张图片,能详细说一下整个使用方法吗?最好亲自试过。


解决了没有,分享下!
相关问题
仿站网专注于帝国CMS仿站及二次开发、模板定制等各种有关帝国CMS程序疑难杂症!
  • 首页
  • 客服
  • 头部