硬汉工作室

搜索
热搜: 活动 交友 discuz

[开发技术] Discuz里的DIY如何显示带有远程图片的贴子

[复制链接]
发表于 2023-1-10 11:17:29 | 显示全部楼层 |阅读模式
discuz里的diy功能很强大,如果想显示图片,必须勾选“必须含图片附件”这个选项,但是如果贴子里都是远程图片,那么这样的贴子就不会显示出来,如何也能显示网络图片的贴子呢?


直接改代码,找到文件source\function\function_block.php,打开搜索:
$searcharr[] = '{'.$key.'}';
$replacearr[] = $replacevalue;

大概在440行左右,把上面的两行代码替换成:
if($key == 'pic') {
        $searcharr[] = '{'.$key.'}';
        if(substr_count($replacevalue, 'http') == 2) {// 这里根据网站具体情况来判断。
                $replacearr[] = str_replace($_G['setting']['ftp']['attachurl'].'forum/', '', $replacevalue);
        } else {
                $replacearr[] = $replacevalue;
        }
} else {
        $searcharr[] = '{'.$key.'}';
        $replacearr[] = $replacevalue;
}

key就是diy里的标签,图片显示的标签是{pic},但是远程图片生成的封面地址是不对的,所以需要处理下。


默认情况下远程图片是不会生成封面的,所以得用我的一个插件,核心代码我写下来:
public function post_message($params) {


        global $_G;


        if (!$this->config['on']) return;


        $param = $params['param'];
        if ($param[0] == 'post_newthread_succeed' || $param[0] == 'post_edit_succeed') {
                if(!DB::fetch_first('select * from %t where tid = %d', array('forum_threadimage', $param[2]['tid']))) {
                        $post = get_post_by_pid($param[2]['pid']);
                        $message = $post['message'];
                        $pattern = '#\[img.*\](.*)\[\/img\]#';
                        preg_match($pattern, $message, $matches);
                        if($matches[1]) {
                                DB::insert('forum_threadimage', [
                                        'tid' => $param[2]['tid'],
                                        'attachment' => $matches[1],
                                        'remote' => 1,
                                ]);
                        }
                }
        }
}
其实就是从内容里获取远程图片链接,插入到forum_threadimage表里,diy判断是否有图片附件,就是根据这个表来的。


这么搞完,diy里就可以显示远程图片的贴子了。

有关PHP系统、Discuz或网站等各种问题,可以联系QQ1069971363寻求付费支持
Discuz插件商店:http://addon.dismall.com/?@56030.developer
回复

使用道具 举报

QQ|Archiver|手机版|小黑屋|硬汉工作室 ( 冀ICP备13021567号-9 )

GMT+8, 2024-4-30 16:32 , Processed in 0.053175 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表