灰儿 发表于 2017-5-10 17:42:27

Discuz教程:开启附件attach://形式的地址无法解析

后台 → 全局 → 上传设置 → 论坛附件 → 附件 URL 地址、媒体附件播放,这项设置为开启后,上传附件的地址可通过 "attach://aid" 方式在任何帖内引用,并支持媒体类附件的直接播放。

此处在X2中存在Bug,添加后并不会正常解析,可根据如下方法进行修改:

找到 source\function\function_discuzcode.php 文件

修改第1处:95行附近
[*]$message = preg_replace("/attach:\/\/(\d+)\.?(\w*)/ie", "parseattachurl('\\1', '\\2')", $message);

复制代码
修改为
[*]$message = preg_replace("/attach:\/\/(\d+)\.?(\w*)/ie", "parseattachurl('\\1', '\\2', 1)", $message);

复制代码
在调用的parseattachurl函数中增加一个参数,为1。

修改第2处:287行附近
[*]function parseattachurl($aid, $ext) {
[*]      global $_G;
[*]      $_G['forum_skipaidlist'][] = $aid;
[*]      return $_G['siteurl'].'forum.php?mod=attachment&aid='.aidencode($aid, $ext, $_G['tid']).($ext ? '&request=yes&_f=.'.$ext : '');
[*]}

复制代码
修改为
[*]function parseattachurl($aid, $ext, $ignoretid = 0) {
[*]      global $_G;
[*]      $_G['forum_skipaidlist'][] = $aid;
[*]      return $_G['siteurl'].'forum.php?mod=attachment&aid='.aidencode($aid, $ext, $ignoretid ? '' : $_G['tid']).($ext ? '&request=yes&_f=.'.$ext : '');
[*]}

复制代码
为parseattachurl函数增加一个参数 $ignoretid ,忽略tid,默认值为0。
此修改则可当通过attach://形式引用附件时,则不传递当前主题的tid,以免导致解析错乱。

http://www.discuz.net/thread-2323193-1-1.html
页: [1]
查看完整版本: Discuz教程:开启附件attach://形式的地址无法解析