网站建设Discuz!x里的DIY如何显示带有远程图片的贴子
网站建设Discuz!x里的DIY如何显示带有远程图片的贴子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 == 'post_newthread_succeed' || $param == 'post_edit_succeed') {
if(!DB::fetch_first('select * from %t where tid = %d', array('forum_threadimage', $param['tid']))) {
$post = get_post_by_pid($param['pid']);
$message = $post['message'];
$pattern = '#\(.*)\[\/img\]#';
preg_match($pattern, $message, $matches);
if($matches) {
DB::insert('forum_threadimage', [
'tid' => $param['tid'],
'attachment' => $matches,
'remote' => 1,
]);
}
}
}
}其实就是从内容里获取远程图片链接,插入到forum_threadimage表里,diy判断是否有图片附件,就是根据这个表来的。
这么搞完,diy里就可以显示远程图片的贴子了。
页:
[1]