深圳市金黑网络技术有限公司始终坚持以用户需求为导向,提供安全、稳定、高效的产品和服务!
签到 · 搜索导航 · 服务热线 · 微信/手机:17817817816

深圳网站建设

查看: 335|回复: 0

网站建设Discuz!x里的DIY如何显示带有远程图片的贴子

[复制链接]

UID
1
贡献
844
金币
1540
主题
520
在线时间
333 小时
注册时间
2022-1-15
最后登录
2024-11-12
QQ
发表于 2023-1-10 11:57:29 | 335 | 0 | 显示全部楼层 |阅读模式
网站建设Discuz!x里的DIY如何显示带有远程图片的贴子

discuz里的diy功能很强大,如果想显示图片,必须勾选“必须含图片附件”这个选项,但是如果贴子里都是远程图片,那么这样的贴子就不会显示出来,如何也能显示网络图片的贴子呢?

直接改代码,找到文件source\function\function_block.php,打开搜索:
  1. $searcharr[] = '{'.$key.'}';
  2. $replacearr[] = $replacevalue;
复制代码
大概在440行左右,把上面的两行代码替换成:
  1. if($key == 'pic') {
  2.         $searcharr[] = '{'.$key.'}';
  3.         if(substr_count($replacevalue, 'http') == 2) {// 这里根据网站具体情况来判断。
  4.                 $replacearr[] = str_replace($_G['setting']['ftp']['attachurl'].'forum/', '', $replacevalue);
  5.         } else {
  6.                 $replacearr[] = $replacevalue;
  7.         }
  8. } else {
  9.         $searcharr[] = '{'.$key.'}';
  10.         $replacearr[] = $replacevalue;
  11. }
复制代码
key就是diy里的标签,图片显示的标签是{pic},但是远程图片生成的封面地址是不对的,所以需要处理下。
默认情况下远程图片是不会生成封面的,所以得用我的一个插件,核心代码我写下来:
  1. public function post_message($params) {
  2.         global $_G;
  3.         if (!$this->config['on']) return;
  4.         $param = $params['param'];
  5.         if ($param[0] == 'post_newthread_succeed' || $param[0] == 'post_edit_succeed') {
  6.                 if(!DB::fetch_first('select * from %t where tid = %d', array('forum_threadimage', $param[2]['tid']))) {
  7.                         $post = get_post_by_pid($param[2]['pid']);
  8.                         $message = $post['message'];
  9.                         $pattern = '#\[img.*\](.*)\[\/img\]#';
  10.                         preg_match($pattern, $message, $matches);
  11.                         if($matches[1]) {
  12.                                 DB::insert('forum_threadimage', [
  13.                                         'tid' => $param[2]['tid'],
  14.                                         'attachment' => $matches[1],
  15.                                         'remote' => 1,
  16.                                 ]);
  17.                         }
  18.                 }
  19.         }
  20. }
复制代码
其实就是从内容里获取远程图片链接,插入到forum_threadimage表里,diy判断是否有图片附件,就是根据这个表来的。
这么搞完,diy里就可以显示远程图片的贴子了。

楼主热帖

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

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